1 // REQUIRES: arm-registered-target
2 // RUN: %clang_cc1 -target-abi aapcs -triple armv7-apple-darwin10 %s -verify
3 // expected-no-diagnostics
4 
5 #include <stddef.h>
6 
7 struct t1
8 {
9   int foo : 1;
10   char : 0;
11   char bar;
12 };
13 static int arr1_offset[(offsetof(struct t1, bar) == 1) ? 0 : -1];
14 static int arr1_sizeof[(sizeof(struct t1) == 4) ? 0 : -1];
15 
16 struct t2
17 {
18   int foo : 1;
19   short : 0;
20   char bar;
21 };
22 static int arr2_offset[(offsetof(struct t2, bar) == 2) ? 0 : -1];
23 static int arr2_sizeof[(sizeof(struct t2) == 4) ? 0 : -1];
24 
25 struct t3
26 {
27   int foo : 1;
28   int : 0;
29   char bar;
30 };
31 static int arr3_offset[(offsetof(struct t3, bar) == 4) ? 0 : -1];
32 static int arr3_sizeof[(sizeof(struct t3) == 8) ? 0 : -1];
33 
34 struct t4
35 {
36   int foo : 1;
37   long : 0;
38   char bar;
39 };
40 static int arr4_offset[(offsetof(struct t4, bar) == 4) ? 0 : -1];
41 static int arr4_sizeof[(sizeof(struct t4) == 8) ? 0 : -1];
42 
43 struct t5
44 {
45   int foo : 1;
46   long long : 0;
47   char bar;
48 };
49 static int arr5_offset[(offsetof(struct t5, bar) == 8) ? 0 : -1];
50 static int arr5_sizeof[(sizeof(struct t5) == 16) ? 0 : -1];
51 
52 struct t6
53 {
54   int foo : 1;
55   char : 0;
56   char bar : 1;
57   char bar2;
58 };
59 static int arr6_offset[(offsetof(struct t6, bar2) == 2) ? 0 : -1];
60 static int arr6_sizeof[(sizeof(struct t6) == 4) ? 0 : -1];
61 
62 struct t7
63 {
64   int foo : 1;
65   short : 0;
66   char bar1 : 1;
67   char bar2;
68 };
69 static int arr7_offset[(offsetof(struct t7, bar2) == 3) ? 0 : -1];
70 static int arr7_sizeof[(sizeof(struct t7) == 4) ? 0 : -1];
71 
72 struct t8
73 {
74   int foo : 1;
75   int : 0;
76   char bar1 : 1;
77   char bar2;
78 };
79 static int arr8_offset[(offsetof(struct t8, bar2) == 5) ? 0 : -1];
80 static int arr8_sizeof[(sizeof(struct t8) == 8) ? 0 : -1];
81 
82 struct t9
83 {
84   int foo : 1;
85   long : 0;
86   char bar1 : 1;
87   char bar2;
88 };
89 static int arr9_offset[(offsetof(struct t9, bar2) == 5) ? 0 : -1];
90 static int arr9_sizeof[(sizeof(struct t9) == 8) ? 0 : -1];
91 
92 struct t10
93 {
94   int foo : 1;
95   long long : 0;
96   char bar1 : 1;
97   char bar2;
98 };
99 static int arr10_offset[(offsetof(struct t10, bar2) == 9) ? 0 : -1];
100 static int arr10_sizeof[(sizeof(struct t10) == 16) ? 0 : -1];
101 
102 struct t11
103 {
104   int foo : 1;
105   long long : 0;
106   char : 0;
107   char bar1 : 1;
108   char bar2;
109 };
110 static int arr11_offset[(offsetof(struct t11, bar2) == 9) ? 0 : -1];
111 static int arr11_sizeof[(sizeof(struct t11) == 16) ? 0 : -1];
112 
113 struct t12
114 {
115   int foo : 1;
116   char : 0;
117   long long : 0;
118   char : 0;
119   char bar;
120 };
121 static int arr12_offset[(offsetof(struct t12, bar) == 8) ? 0 : -1];
122 static int arr12_sizeof[(sizeof(struct t12) == 16) ? 0 : -1];
123 
124 struct t13
125 {
126   char foo;
127   long : 0;
128   char bar;
129 };
130 static int arr13_offset[(offsetof(struct t13, bar) == 4) ? 0 : -1];
131 static int arr13_sizeof[(sizeof(struct t13) == 8) ? 0 : -1];
132 
133 struct t14
134 {
135   char foo1;
136   int : 0;
137   char foo2 : 1;
138   short foo3 : 16;
139   char : 0;
140   short foo4 : 16;
141   char bar1;
142   int : 0;
143   char bar2;
144 };
145 static int arr14_bar1_offset[(offsetof(struct t14, bar1) == 10) ? 0 : -1];
146 static int arr14_bar2_offset[(offsetof(struct t14, bar2) == 12) ? 0 : -1];
147 static int arr14_sizeof[(sizeof(struct t14) == 16) ? 0 : -1];
148 
149 struct t15
150 {
151   char foo;
152   char : 0;
153   int : 0;
154   char bar;
155   long : 0;
156   char : 0;
157 };
158 static int arr15_offset[(offsetof(struct t15, bar) == 4) ? 0 : -1];
159 static int arr15_sizeof[(sizeof(struct t15) == 8) ? 0 : -1];
160 
161 struct t16
162 {
163   long : 0;
164   char bar;
165 };
166 static int arr16_offset[(offsetof(struct t16, bar) == 0) ? 0 : -1];
167 static int arr16_sizeof[(sizeof(struct t16) == 4) ? 0 : -1];
168 
169 struct t17
170 {
171   char foo;
172   long : 0;
173   long : 0;
174   char : 0;
175   char bar;
176 };
177 static int arr17_offset[(offsetof(struct t17, bar) == 4) ? 0 : -1];
178 static int arr17_sizeof[(sizeof(struct t17) == 8) ? 0 : -1];
179 
180 struct t18
181 {
182   long : 0;
183   long : 0;
184   char : 0;
185 };
186 static int arr18_sizeof[(sizeof(struct t18) == 0) ? 0 : -1];
187 
188 struct t19
189 {
190   char foo1;
191   long foo2 : 1;
192   char : 0;
193   long foo3 : 32;
194   char bar;
195 };
196 static int arr19_offset[(offsetof(struct t19, bar) == 8) ? 0 : -1];
197 static int arr19_sizeof[(sizeof(struct t19) == 12) ? 0 : -1];
198 
199 struct t20
200 {
201   short : 0;
202   int foo : 1;
203   long : 0;
204   char bar;
205 };
206 static int arr20_offset[(offsetof(struct t20, bar) == 4) ? 0 : -1];
207 static int arr20_sizeof[(sizeof(struct t20) == 8) ? 0 : -1];
208 
209 struct t21
210 {
211   short : 0;
212   int foo1 : 1;
213   char : 0;
214   int foo2 : 16;
215   long : 0;
216   char bar1;
217   int bar2;
218   long bar3;
219   char foo3 : 8;
220   char : 0;
221   long : 0;
222   int foo4 : 32;
223   short foo5: 1;
224   long bar4;
225   short foo6: 16;
226   short foo7: 16;
227   short foo8: 16;
228 };
229 static int arr21_bar1_offset[(offsetof(struct t21, bar1) == 4) ? 0 : -1];
230 static int arr21_bar2_offset[(offsetof(struct t21, bar2) == 8) ? 0 : -1];
231 static int arr21_bar3_offset[(offsetof(struct t21, bar3) == 12) ? 0 : -1];
232 static int arr21_bar4_offset[(offsetof(struct t21, bar4) == 28) ? 0 : -1];
233 static int arr21_sizeof[(sizeof(struct t21) == 40) ? 0 : -1];
234 
main()235 int main() {
236   return 0;
237 }
238 
239