| /* { dg-do run } */ | |
| /* { dg-require-effective-target size32plus } */ | |
| /* { dg-options "-fstrict-volatile-bitfields" } */ | |
| extern void abort (void); | |
| #pragma pack(1) | |
| volatile struct S0 { | |
| signed a : 7; | |
| unsigned b : 28; /* b can't be fetched with an aligned 32-bit access, */ | |
| /* but it certainly can be fetched with an unaligned access */ | |
| } g = {0,0xfffffff}; | |
| int main() { | |
| unsigned b = g.b; | |
| if (b != 0xfffffff) | |
| abort (); | |
| return 0; | |
| } |