1 | // RUN: %clang_cc1 -emit-llvm-only -triple x86_64-apple-darwin9 %s |
2 | // rdar://8823265 |
3 | |
4 | #define ATTR __attribute__((__ms_struct__)) |
5 | |
6 | struct { |
7 | unsigned int bf_1 : 12; |
8 | unsigned int : 0; |
9 | unsigned int bf_2 : 12; |
10 | } ATTR t1; |
11 | static int a1[(sizeof(t1) == 8) -1]; |
12 | |
13 | struct |
14 | { |
15 | char foo : 4; |
16 | short : 0; |
17 | char bar; |
18 | } ATTR t2; |
19 | static int a2[(sizeof(t2) == 4) -1]; |
20 | |
21 | #pragma ms_struct on |
22 | struct |
23 | { |
24 | char foo : 4; |
25 | short : 0; |
26 | char bar; |
27 | } t3; |
28 | #pragma ms_struct off |
29 | static int a3[(sizeof(t3) == 4) -1]; |
30 | |
31 | struct |
32 | { |
33 | char foo : 6; |
34 | long : 0; |
35 | } ATTR t4; |
36 | static int a4[(sizeof(t4) == 8) -1]; |
37 | |
38 | struct |
39 | { |
40 | char foo : 4; |
41 | short : 0; |
42 | char bar : 8; |
43 | } ATTR t5; |
44 | static int a5[(sizeof(t5) == 4) -1]; |
45 | |
46 | struct |
47 | { |
48 | char foo : 4; |
49 | short : 0; |
50 | long : 0; |
51 | char bar; |
52 | } ATTR t6; |
53 | static int a6[(sizeof(t6) == 4) -1]; |
54 | |
55 | struct |
56 | { |
57 | char foo : 4; |
58 | long : 0; |
59 | short : 0; |
60 | char bar; |
61 | } ATTR t7; |
62 | static int a7[(sizeof(t7) == 16) -1]; |
63 | |
64 | struct |
65 | { |
66 | char foo : 4; |
67 | short : 0; |
68 | long : 0; |
69 | char bar:7; |
70 | } ATTR t8; |
71 | static int a8[(sizeof(t8) == 4) -1]; |
72 | |
73 | struct |
74 | { |
75 | char foo : 4; |
76 | long : 0; |
77 | short : 0; |
78 | char bar: 8; |
79 | } ATTR t9; |
80 | static int a9[(sizeof(t9) == 16) -1]; |
81 | |
82 | struct |
83 | { |
84 | char foo : 4; |
85 | char : 0; |
86 | short : 0; |
87 | int : 0; |
88 | long :0; |
89 | char bar; |
90 | } ATTR t10; |
91 | static int a10[(sizeof(t10) == 2) -1]; |
92 | |