/* 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; | |
} |