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