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