1 /* { dg-do run } */ 2 /* { dg-additional-options "-fno-tree-dse" } */ 3 4 union U { long long i; long f; }; 5 struct a {union U u;}; 6 struct aa {struct a a;}; 7 struct b {union U u;}; 8 struct bb {struct b b;}; 9 10 long __attribute__((noipa)) foo(struct bb * bv,void * ptr)11foo (struct bb *bv, void *ptr) 12 { 13 struct aa *a = ptr; 14 struct bb *b = ptr; 15 bv->b.u.f = 1; 16 a->a.u.i = 0; 17 b->b.u.f = 0; 18 return bv->b.u.f; 19 } 20 21 int main()22main () 23 { 24 union C {struct aa aa; struct bb bb;} v; 25 if (foo (&v.bb, &v) != 0) 26 __builtin_abort (); 27 return 0; 28 } 29