| /* PR middle-end/51323 */ | |
| extern void abort (void); | |
| struct S { int a, b, c; }; | |
| int v; | |
| __attribute__((noinline, noclone)) void | |
| foo (int x, int y, int z) | |
| { | |
| if (x != v || y != 0 || z != 9) | |
| abort (); | |
| } | |
| static inline int | |
| baz (const struct S *p) | |
| { | |
| return p->b; | |
| } | |
| __attribute__((noinline, noclone)) void | |
| bar (int x, struct S y) | |
| { | |
| foo (baz (&y), 0, x); | |
| } | |
| int | |
| main () | |
| { | |
| struct S s; | |
| v = 3; s.a = v - 1; s.b = v; s.c = v + 1; | |
| bar (9, s); | |
| v = 17; s.a = v - 1; s.b = v; s.c = v + 1; | |
| bar (9, s); | |
| return 0; | |
| } |