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)9 baz (struct A *a)
10 {
11   a->x = 3;
12   a->y = 2;
13 }
14 
foo(int i)15 foo (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()34 main ()
35 {
36   foo (30);
37   return 0;
38 }
39