/* { dg-options "-Os" } */ | |
/* { dg-final { scan-assembler-not " orl\t" } } */ | |
/* Radar 6020402 - GCC 4.2.1/x86_64 coalesces accesses to 32-bit bitfield and | |
adjacent volatile qualified "int" embedded in a struct. | |
This test case makes sure that a 32-bit OR is not used to store to | |
the bit field "a", which would interfere with the volatile field "i". | |
Note that -m64 is not required for this issue to occur. | |
*/ | |
typedef struct { | |
unsigned u; | |
short a:1, b:15; | |
volatile short i; | |
} S; | |
S s; | |
void f() { | |
s.a = 1; | |
} |