/* { dg-do compile } */ /* { dg-options "-O2 -fno-store-merging" } */ struct B { B() {} int x; int a : 6; int b : 6; int c : 6; }; struct C : B { char d; }; C c; int main() { /* We have to make sure to not cause a store data race between c.c and c.d residing in the tail padding of B. */ c.c = 1; c.d = 2; } /* In particular on x86 c.d should not be loaded/stored via movl. */ /* { dg-final { scan-assembler-not "movl" { target { x86_64-*-* i?86-*-* } } } } */