1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -fdump-tree-optimized" } */ 3 /* { dg-require-effective-target int32plus } */ 4 5 void baz (unsigned); 6 7 extern unsigned buf[]; 8 9 struct A 10 { 11 unsigned a1:10; 12 unsigned a2:3; 13 unsigned:19; 14 }; 15 16 union TMP 17 { 18 struct A a; 19 unsigned int b; 20 }; 21 22 static unsigned foo(struct A * p)23foo (struct A *p) 24 { 25 union TMP t; 26 struct A x; 27 28 x = *p; 29 t.a = x; 30 return t.b; 31 } 32 33 void bar(unsigned orig,unsigned * new)34bar (unsigned orig, unsigned *new) 35 { 36 struct A a; 37 union TMP s; 38 39 s.b = orig; 40 a = s.a; 41 if (a.a1) 42 baz (a.a2); 43 *new = foo (&a); 44 } 45 46 /* { dg-final { scan-tree-dump-not "unnamed-unsigned:19" "optimized"} } */ 47