1 /* We used to mis-compile this testcase as we did not know that
2    &a+offsetof(b,a) was the same as &a.b */
3 struct A
4 {
5   int t;
6   int i;
7 };
8 
9 void
bar(float * p)10 bar (float *p)
11 {
12   *p = 5.2;
13 }
14 
15 int
foo(struct A * locp,int i,int str)16 foo(struct A *locp, int i, int str)
17 {
18   float f, g, *p;
19   int T355;
20   int *T356;
21   /* Currently, the alias analyzer has limited support for handling
22      aliases of structure fields when no other variables are aliased.
23      Introduce additional aliases to confuse it.  */
24   p =  i ? &g : &f;
25   bar (p);
26   if (*p > 0.0)
27     str = 1;
28 
29   T355 = locp->i;
30   T356 = &locp->i;
31   *T356 = str;
32   T355 = locp->i;
33 
34   return T355;
35 }
36 
main()37 main ()
38 {
39   struct A loc;
40   int str;
41 
42   loc.i = 2;
43   str = foo (&loc, 10, 3);
44   if (str!=1)
45     abort ();
46   return 0;
47 }
48 
49