// Test for bitfield alignment in structs on IA-32 // { dg-do run } // { dg-require-effective-target ilp32 } // { dg-options "-O2" } // { dg-options "-mno-align-double -mno-ms-bitfields" { target i?86-*-interix* i?86-*-cygwin* i?86-*-mingw*} } extern void abort (void); extern void exit (int); struct A { char a; long long b : 61; char c; } a, a4[4]; struct B { char d; struct A e; char f; } b; struct C { char g; union U { char u1; long long u2; long long u3 : 64; } h; char i; } c; int main (void) { if (&a.c - &a.a != 12) abort (); if (sizeof (a) != 16) abort (); if (sizeof (a4) != 4 * 16) abort (); if (sizeof (b) != 2 * 4 + 16) abort (); if (__alignof__ (b.e) != 4) abort (); if (&c.i - &c.g != 12) abort (); if (sizeof (c) != 16) abort (); if (__alignof__ (c.h) != 4) abort (); exit (0); }