/* We used to mis-compile this testcase as we did not know that &a+offsetof(b,a) was the same as &a.b */ struct A { int t; int i; }; void bar (float *p) { *p = 5.2; } int foo(struct A *locp, int i, int str) { float f, g, *p; int T355; int *T356; /* Currently, the alias analyzer has limited support for handling aliases of structure fields when no other variables are aliased. Introduce additional aliases to confuse it. */ p = i ? &g : &f; bar (p); if (*p > 0.0) str = 1; T355 = locp->i; T356 = &locp->i; *T356 = str; T355 = locp->i; return T355; } main () { struct A loc; int str; loc.i = 2; str = foo (&loc, 10, 3); if (str!=1) abort (); return 0; }