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