/* gcc34 -m32 -O2 -march=i386 -mtune=pentium4 */ #include struct S { unsigned int s1 : 8, s2 : 10; unsigned int s3 : 1, s4 : 1, s5 : 1, s6 : 1; }; int test (struct S *s, int n) { int i, ret; i = 0, ret = 0; while (++i < n && s[i].s1 == 1 && s[i].s5) ++ret; return ret; } int main (void) { struct S *s = malloc (4 * sizeof (struct S)); int i; for (i = 0; i < 4; ++i) { s[i].s1 = (i + 2) / 2; if (i < 2) s[i].s5 = 1; } return test (s, 4) != 1; }