diff options
Diffstat (limited to 'SingleSource/Regression/C/gcc-c-torture/execute/pr67781.c')
-rw-r--r-- | SingleSource/Regression/C/gcc-c-torture/execute/pr67781.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/SingleSource/Regression/C/gcc-c-torture/execute/pr67781.c b/SingleSource/Regression/C/gcc-c-torture/execute/pr67781.c new file mode 100644 index 00000000..71ccd6a4 --- /dev/null +++ b/SingleSource/Regression/C/gcc-c-torture/execute/pr67781.c @@ -0,0 +1,35 @@ +/* { 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; +} |