1 /* PR tree-optimization/49279 */ 2 extern void abort (void); 3 4 struct S { int a; int *__restrict p; }; 5 6 __attribute__((noinline, noclone)) bar(struct S * p)7struct S *bar (struct S *p) 8 { 9 struct S *r; 10 asm volatile ("" : "=r" (r) : "0" (p) : "memory"); 11 return r; 12 } 13 14 __attribute__((noinline, noclone)) 15 int foo(int * p,int * q)16foo (int *p, int *q) 17 { 18 struct S s, *t; 19 s.a = 1; 20 s.p = p; 21 t = bar (&s); 22 t->p = q; 23 s.p[0] = 0; 24 t->p[0] = 1; 25 return s.p[0]; 26 } 27 28 int main()29main () 30 { 31 int a, b; 32 if (foo (&a, &b) != 1) 33 abort (); 34 return 0; 35 } 36