[PR97969] LRA: Transform pattern `plus (plus (hard reg, const), pseudo)` after elimin...
[gcc.git] / gcc / testsuite / gcc.target / arm / pr97969.c
1 /* { dg-do compile } */
2 /* { dg-options "-std=c99 -fno-omit-frame-pointer -mthumb -w -Os" } */
3
4 typedef a[23];
5 enum { b };
6 typedef struct {
7 int c;
8 char *e;
9 char f
10 } d;
11 typedef enum { g = 1 } h;
12 typedef struct {
13 h i;
14 int j
15 } k;
16 typedef struct {
17 a l;
18 int a;
19 int m;
20 int n;
21 int o;
22 short p;
23 int q;
24 k r;
25 char e;
26 char *s;
27 d t;
28 d *u;
29 short v;
30 int w
31 } aa;
32 c(char x, int y, char z, int ab) {
33 aa ac;
34 ac.r.i = 0;
35 d ad;
36 ac.t = ad;
37 ac.u = 0;
38 ae(&ac.v, 0, 0);
39 ac.w = 0;
40 af(&ac, x + y, z, z + ab);
41 if (ag(0))
42 return 0;
43 if (x)
44 ac.s = z + ab;
45 else
46 ac.s = x + y;
47 ac.o |= g;
48 if (!setjmp()) {
49 ah(ac);
50 ai(b);
51 ac.e = z + ab;
52 aj(ac);
53 }
54 }