/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ /* { dg-require-effective-target int32plus } */ void baz (unsigned); extern unsigned buf[]; struct A { unsigned a1:10; unsigned a2:3; unsigned:19; }; union TMP { struct A a; unsigned int b; }; static unsigned foo (struct A *p) { union TMP t; struct A x; x = *p; t.a = x; return t.b; } void bar (unsigned orig, unsigned *new) { struct A a; union TMP s; s.b = orig; a = s.a; if (a.a1) baz (a.a2); *new = foo (&a); } /* { dg-final { scan-tree-dump-not "unnamed-unsigned:19" "optimized"} } */ /* { dg-final { cleanup-tree-dump "optimized" } } */