/* { dg-do run } */ /* { dg-additional-options "-fno-tree-dse" } */ 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 __attribute__((noipa)) 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; }