1 /* PR middle-end/51323 */
2
3 extern void abort (void);
4 struct S { int a, b, c; };
5 int v;
6
7 __attribute__((noinline, noclone)) void
foo(int x,int y,int z)8 foo (int x, int y, int z)
9 {
10 if (x != v || y != 0 || z != 9)
11 abort ();
12 }
13
14 static inline int
baz(const struct S * p)15 baz (const struct S *p)
16 {
17 return p->b;
18 }
19
20 __attribute__((noinline, noclone)) void
bar(int x,struct S y)21 bar (int x, struct S y)
22 {
23 foo (baz (&y), 0, x);
24 }
25
26 int
main()27 main ()
28 {
29 struct S s;
30 v = 3; s.a = v - 1; s.b = v; s.c = v + 1;
31 bar (9, s);
32 v = 17; s.a = v - 1; s.b = v; s.c = v + 1;
33 bar (9, s);
34 return 0;
35 }
36