/* { 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; | |
} |