/* PR middle-end/17112 */ /* { dg-do run } */ /* { dg-require-effective-target int32plus } */ /* { dg-options "-O2" } */ extern void abort(void); typedef struct { int int24:24 __attribute__ ((packed)); } myint24; myint24 x[3] = { 0x123456, 0x789abc, 0xdef012 }; myint24 y[3]; // starts out as zeros void foo() { y[1] = x[1]; } int main() { foo(); if (y[0].int24 != 0 || y[2].int24 != 0) abort(); return 0; }