#include #include #include int main () { struct foo { int part1: 8; int nothing : 1; int part2 : 5; int lots_more_nothing : 3; int some_padding; /* for 64-bit hosts */ float some_more_nothing; double yet_more_nothing; }; #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *) 0)->MEMBER) struct foo* q = (struct foo *) malloc (offsetof (struct foo, some_more_nothing)); q->nothing = 1; /* touch q */ /* The RHS of the following expression is meant to trigger a fold-const.c mapping the expression to a BIT_FIELD_REF. It glues together the accesses to the two non-neighbouring bitfields into a single bigger boolean test. */ q->lots_more_nothing = (q->part1 == 13 && q->part2 == 7); free (q); return 0; }