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)11 foo (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()22 main ()
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