PR target/52991
[official-gcc.git] / gcc / testsuite / gcc.dg / bf-ms-layout-4.c
blob821db075a9a8f8ad6ee941bb2b2716292cf5d7bb
1 /* PR target/52991 */
2 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
4 #define CHECK(expr) extern char c[(expr) ? 1 : -1]
5 #define offsetof(x, y) __builtin_offsetof (x, y)
7 struct test_sp1 {
8 int a;
9 short b;
10 int c;
11 char d;
12 } __attribute__((packed,ms_struct));
14 CHECK (sizeof (struct test_sp1) == 11);
15 CHECK (offsetof (struct test_sp1, a) == 0);
16 CHECK (offsetof (struct test_sp1, b) == 4);
17 CHECK (offsetof (struct test_sp1, c) == 6);
18 CHECK (offsetof (struct test_sp1, d) == 10);
20 struct test_sp3 {
21 int a;
22 short b __attribute__((aligned(8)));
23 int c;
24 char d;
25 } __attribute__((packed,ms_struct));
27 CHECK (sizeof (struct test_sp3) == 16);
28 CHECK (offsetof (struct test_sp3, a) == 0);
29 CHECK (offsetof (struct test_sp3, b) == 8);
30 CHECK (offsetof (struct test_sp3, c) == 10);
31 CHECK (offsetof (struct test_sp3, d) == 14);
33 struct test_s4 {
34 int a;
35 short b;
36 int c:15;
37 char d;
38 } __attribute__((ms_struct));
40 CHECK (sizeof (struct test_s4) == 16);
41 CHECK (offsetof (struct test_s4, a) == 0);
42 CHECK (offsetof (struct test_s4, b) == 4);
43 CHECK (offsetof (struct test_s4, d) == 12);