1 /* PR tree-optimization/93945 */
2 
3 union U { char a[8]; struct S { unsigned int b : 8, c : 13, d : 11; } e; } u;
4 
5 __attribute__((noipa)) int
foo(void)6 foo (void)
7 {
8   __builtin_memset (&u.a, 0xf4, sizeof (u.a));
9   return u.e.c;
10 }
11 
12 __attribute__((noipa)) int
bar(void)13 bar (void)
14 {
15   asm volatile ("" : : "g" (&u) : "memory");
16   return u.e.c;
17 }
18 
19 __attribute__((noipa)) int
baz(void)20 baz (void)
21 {
22   __builtin_memset (&u.a, 0xf4, sizeof (u.a));
23   return u.e.d;
24 }
25 
26 __attribute__((noipa)) int
qux(void)27 qux (void)
28 {
29   asm volatile ("" : : "g" (&u) : "memory");
30   return u.e.d;
31 }
32 
33 int
main()34 main ()
35 {
36   int a = foo ();
37   int b = bar ();
38   if (a != b)
39     __builtin_abort ();
40   a = baz ();
41   b = qux ();
42   if (a != b)
43     __builtin_abort ();
44   return 0;
45 }
46