https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92152
--- Comment #15 from Jan Hubicka <hubicka at gcc dot gnu.org> --- The following testcase: union U { long long i; long f; }; struct a {union U u;}; struct aa {struct a a;}; struct b {union U u;}; struct bb {struct b b;}; long foo (struct bb *bv, void *ptr) { struct aa *a = ptr; struct bb *b = ptr; bv->b.u.f = 1; a->a.u.i = 0; b->b.u.f = 0; return bv->b.u.f; } int main () { union C {struct aa aa; struct bb bb;} v; if (foo (&v.bb, &v) != 0) __builtin_abort (); return 0; } is misoptimized since GCC 4.6