/* PR tree-optimization/93945 */ union U { char a[8]; struct S { unsigned int b : 8, c : 13, d : 11; } e; } u; __attribute__((noipa)) int foo (void) { __builtin_memset (&u.a, 0xf4, sizeof (u.a)); return u.e.c; } __attribute__((noipa)) int bar (void) { asm volatile ("" : : "g" (&u) : "memory"); return u.e.c; } __attribute__((noipa)) int baz (void) { __builtin_memset (&u.a, 0xf4, sizeof (u.a)); return u.e.d; } __attribute__((noipa)) int qux (void) { asm volatile ("" : : "g" (&u) : "memory"); return u.e.d; } int main () { int a = foo (); int b = bar (); if (a != b) __builtin_abort (); a = baz (); b = qux (); if (a != b) __builtin_abort (); return 0; }