// Test for bitfield alignment in structs on IA-32
// { dg-do run { target i?86-*-* } }
/* { dg-skip-if "" { i?86-*-* } { "-m64" } { "" } } */
// { 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);
}
