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)6foo (void) 7 { 8 __builtin_memset (&u.a, 0xf4, sizeof (u.a)); 9 return u.e.c; 10 } 11 12 __attribute__((noipa)) int bar(void)13bar (void) 14 { 15 asm volatile ("" : : "g" (&u) : "memory"); 16 return u.e.c; 17 } 18 19 __attribute__((noipa)) int baz(void)20baz (void) 21 { 22 __builtin_memset (&u.a, 0xf4, sizeof (u.a)); 23 return u.e.d; 24 } 25 26 __attribute__((noipa)) int qux(void)27qux (void) 28 { 29 asm volatile ("" : : "g" (&u) : "memory"); 30 return u.e.d; 31 } 32 33 int main()34main () 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