6de9cd9a88
From-SVN: r81764
30 lines
762 B
C
30 lines
762 B
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
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;
|
|
}
|