1 /* { dg-do run } */ 2 3 extern void abort (void); 4 struct Foo { 5 int *p; 6 int *q; 7 }; 8 struct Foo __attribute__((noinline)) bar(int * p)9bar(int *p) 10 { 11 struct Foo f; 12 f.p = p; 13 return f; 14 } 15 void __attribute__((noinline)) foo(struct Foo f)16foo(struct Foo f) 17 { 18 *f.p = 0; 19 } main()20int main() 21 { 22 int a, b; 23 a = 0; 24 b = 1; 25 struct Foo f; 26 f = bar (&b); 27 f.q = &a; 28 foo(f); 29 if (b != 0) 30 abort (); 31 return 0; 32 } 33 34