/* { dg-require-effective-target int32plus } */ #ifdef __UINT32_TYPE__ typedef __UINT32_TYPE__ uint32_t; #else typedef unsigned uint32_t; #endif #ifdef __UINT8_TYPE__ typedef __UINT8_TYPE__ uint8_t; #else typedef unsigned char uint8_t; #endif struct { uint32_t a; uint8_t b; } s = { 0x123456, 0x78 }; int pr67781() { uint32_t c = (s.a << 8) | s.b; return c; } int main () { if (sizeof (uint32_t) * __CHAR_BIT__ != 32) return 0; if (pr67781 () != 0x12345678) __builtin_abort (); return 0; }