1 /* { dg-do run } */ 2 3 extern void abort (void); 4 5 struct X { 6 int *p; 7 int *q; 8 }; 9 10 void __attribute__((noinline, noclone)) foo(struct X x)11foo (struct X x) { *x.q = 0; } 12 13 volatile int what; 14 struct X y; 15 main()16int main() 17 { 18 int i, j; 19 struct X x, *p; 20 x.p = &i; 21 x.q = &j; 22 if (what) 23 p = &y; 24 else 25 p = &x; 26 j = 1; 27 foo (*p); 28 if (j != 0) 29 abort (); 30 return 0; 31 } 32