/* PR tree-optimization/86492 */ union U { unsigned int r; struct S { unsigned int a:12; unsigned int b:4; unsigned int c:16; } f; }; __attribute__((noipa)) unsigned int foo (unsigned int x) { union U u; u.r = 0; u.f.c = x; u.f.b = 0xe; return u.r; } int main () { union U u; if (__CHAR_BIT__ * __SIZEOF_INT__ != 32 || sizeof (u.r) != sizeof (u.f)) return 0; u.r = foo (0x72); if (u.f.a != 0 || u.f.b != 0xe || u.f.c != 0x72) __builtin_abort (); return 0; }