1 /* { dg-do run } */ 2 /* { dg-options "-O2 -std=gnu89" } */ 3 4 struct A { 5 int x; 6 int y; 7 }; 8 baz(struct A * a)9baz (struct A *a) 10 { 11 a->x = 3; 12 a->y = 2; 13 } 14 foo(int i)15foo (int i) 16 { 17 struct A a; 18 19 /* Make sure we can't scalarize 'a'. */ 20 baz (&a); 21 22 if (i > 10) 23 a.x = i; 24 else 25 a.x = i; 26 27 /* Copy propagation should prove that this predicate is always false. */ 28 if (a.x != i) 29 link_error (); 30 31 return a.x; 32 } 33 main()34main () 35 { 36 foo (30); 37 return 0; 38 } 39