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)9 void bar(struct Foo *f)
10 {
11   f->p = &p0;
12 }
foo(struct Foo * f)13 int foo(struct Foo *f)
14 {
15   f->p->p = 1;
16   bar(f);
17   return f->p->p;
18 }
main()19 int main()
20 {
21   struct Foo f;
22   f.p = &p1;
23   if (foo(&f) != 0)
24     abort ();
25   return 0;
26 }
27