1 /* { dg-do run } */ 2 /* { dg-options "-O2" } */ 3 4 extern void abort(void); 5 struct Bar { int p; }; 6 struct Foo { struct Bar *p; }; 7 struct Bar p0 = { 0 }; 8 struct Bar p1 = { 1 }; bar(struct Foo * f)9void bar(struct Foo *f) 10 { 11 f->p = &p0; 12 } foo(struct Foo * f)13int foo(struct Foo *f) 14 { 15 f->p->p = 1; 16 bar(f); 17 return f->p->p; 18 } main()19int main() 20 { 21 struct Foo f; 22 f.p = &p1; 23 if (foo(&f) != 0) 24 abort (); 25 return 0; 26 } 27