Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / gcc.target / i386 / bitfield1.c
blobe285ba0526a191abe377ad15ec55064772f72809
1 // Test for bitfield alignment in structs on IA-32
2 // { dg-do run { target i?86-*-* x86_64-*-* } }
3 // { dg-require-effective-target ilp32 }
4 // { dg-options "-O2" }
5 // { dg-options "-mno-align-double -mno-ms-bitfields" { target i?86-*-interix* i?86-*-cygwin* i?86-*-mingw*} }
7 extern void abort (void);
8 extern void exit (int);
10 struct A
12 char a;
13 long long b : 61;
14 char c;
15 } a, a4[4];
17 struct B
19 char d;
20 struct A e;
21 char f;
22 } b;
24 struct C
26 char g;
27 union U
29 char u1;
30 long long u2;
31 long long u3 : 64;
32 } h;
33 char i;
34 } c;
36 int main (void)
38 if (&a.c - &a.a != 12)
39 abort ();
40 if (sizeof (a) != 16)
41 abort ();
42 if (sizeof (a4) != 4 * 16)
43 abort ();
44 if (sizeof (b) != 2 * 4 + 16)
45 abort ();
46 if (__alignof__ (b.e) != 4)
47 abort ();
48 if (&c.i - &c.g != 12)
49 abort ();
50 if (sizeof (c) != 16)
51 abort ();
52 if (__alignof__ (c.h) != 4)
53 abort ();
54 exit (0);