1 /* { dg-do run } */
2 /* { dg-options "-fno-early-inlining" } */
3 
4 extern void abort (void);
5 
6 union U
7 {
8   int i;
9   _Bool b;
10 };
11 
12 _Bool gb;
13 
14 void  __attribute__ ((noinline))
use_bool(union U u)15 use_bool (union U u)
16 {
17   gb = u.b;
18 }
19 
20 union U
bar(void)21 bar (void)
22 {
23   union U u;
24   u.i = 0xFFFE;
25   return u;
26 }
27 
28 union U  __attribute__ ((noinline))
foo(void)29 foo (void)
30 {
31   union U u,v;
32 
33   u.b = 1;
34   use_bool (u);
35   u = bar ();
36 
37   return u;
38 }
39 
main(int argc,char ** argv)40 int main (int argc, char **argv)
41 {
42   union U u = foo ();
43   if (u.i != 0xFFFE)
44     abort ();
45   return 0;
46 }
47