/* PR rtl-optimization/89195 */ /* { dg-require-effective-target int32plus } */ struct S { unsigned i : 24; }; volatile unsigned char x; __attribute__((noipa)) int foo (struct S d) { return d.i & x; } int main () { struct S d = { 0x123456 }; x = 0x75; if (foo (d) != (0x56 & 0x75)) __builtin_abort (); return 0; }