Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / CodeGen / arm-aapcs-zerolength-bitfield.c
blob2855045c1e788433e16061df1e7e024d461f58eb
1 // REQUIRES: arm-registered-target
2 // RUN: %clang_cc1 -target-abi aapcs -triple armv7-apple-darwin10 %s -verify
3 // expected-no-diagnostics
5 #include <stddef.h>
7 struct t1
9 int foo : 1;
10 char : 0;
11 char bar;
13 static int arr1_offset[(offsetof(struct t1, bar) == 1) ? 0 : -1];
14 static int arr1_sizeof[(sizeof(struct t1) == 4) ? 0 : -1];
16 struct t2
18 int foo : 1;
19 short : 0;
20 char bar;
22 static int arr2_offset[(offsetof(struct t2, bar) == 2) ? 0 : -1];
23 static int arr2_sizeof[(sizeof(struct t2) == 4) ? 0 : -1];
25 struct t3
27 int foo : 1;
28 int : 0;
29 char bar;
31 static int arr3_offset[(offsetof(struct t3, bar) == 4) ? 0 : -1];
32 static int arr3_sizeof[(sizeof(struct t3) == 8) ? 0 : -1];
34 struct t4
36 int foo : 1;
37 long : 0;
38 char bar;
40 static int arr4_offset[(offsetof(struct t4, bar) == 4) ? 0 : -1];
41 static int arr4_sizeof[(sizeof(struct t4) == 8) ? 0 : -1];
43 struct t5
45 int foo : 1;
46 long long : 0;
47 char bar;
49 static int arr5_offset[(offsetof(struct t5, bar) == 8) ? 0 : -1];
50 static int arr5_sizeof[(sizeof(struct t5) == 16) ? 0 : -1];
52 struct t6
54 int foo : 1;
55 char : 0;
56 char bar : 1;
57 char bar2;
59 static int arr6_offset[(offsetof(struct t6, bar2) == 2) ? 0 : -1];
60 static int arr6_sizeof[(sizeof(struct t6) == 4) ? 0 : -1];
62 struct t7
64 int foo : 1;
65 short : 0;
66 char bar1 : 1;
67 char bar2;
69 static int arr7_offset[(offsetof(struct t7, bar2) == 3) ? 0 : -1];
70 static int arr7_sizeof[(sizeof(struct t7) == 4) ? 0 : -1];
72 struct t8
74 int foo : 1;
75 int : 0;
76 char bar1 : 1;
77 char bar2;
79 static int arr8_offset[(offsetof(struct t8, bar2) == 5) ? 0 : -1];
80 static int arr8_sizeof[(sizeof(struct t8) == 8) ? 0 : -1];
82 struct t9
84 int foo : 1;
85 long : 0;
86 char bar1 : 1;
87 char bar2;
89 static int arr9_offset[(offsetof(struct t9, bar2) == 5) ? 0 : -1];
90 static int arr9_sizeof[(sizeof(struct t9) == 8) ? 0 : -1];
92 struct t10
94 int foo : 1;
95 long long : 0;
96 char bar1 : 1;
97 char bar2;
99 static int arr10_offset[(offsetof(struct t10, bar2) == 9) ? 0 : -1];
100 static int arr10_sizeof[(sizeof(struct t10) == 16) ? 0 : -1];
102 struct t11
104 int foo : 1;
105 long long : 0;
106 char : 0;
107 char bar1 : 1;
108 char bar2;
110 static int arr11_offset[(offsetof(struct t11, bar2) == 9) ? 0 : -1];
111 static int arr11_sizeof[(sizeof(struct t11) == 16) ? 0 : -1];
113 struct t12
115 int foo : 1;
116 char : 0;
117 long long : 0;
118 char : 0;
119 char bar;
121 static int arr12_offset[(offsetof(struct t12, bar) == 8) ? 0 : -1];
122 static int arr12_sizeof[(sizeof(struct t12) == 16) ? 0 : -1];
124 struct t13
126 char foo;
127 long : 0;
128 char bar;
130 static int arr13_offset[(offsetof(struct t13, bar) == 4) ? 0 : -1];
131 static int arr13_sizeof[(sizeof(struct t13) == 8) ? 0 : -1];
133 struct t14
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;
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];
149 struct t15
151 char foo;
152 char : 0;
153 int : 0;
154 char bar;
155 long : 0;
156 char : 0;
158 static int arr15_offset[(offsetof(struct t15, bar) == 4) ? 0 : -1];
159 static int arr15_sizeof[(sizeof(struct t15) == 8) ? 0 : -1];
161 struct t16
163 long : 0;
164 char bar;
166 static int arr16_offset[(offsetof(struct t16, bar) == 0) ? 0 : -1];
167 static int arr16_sizeof[(sizeof(struct t16) == 4) ? 0 : -1];
169 struct t17
171 char foo;
172 long : 0;
173 long : 0;
174 char : 0;
175 char bar;
177 static int arr17_offset[(offsetof(struct t17, bar) == 4) ? 0 : -1];
178 static int arr17_sizeof[(sizeof(struct t17) == 8) ? 0 : -1];
180 struct t18
182 long : 0;
183 long : 0;
184 char : 0;
186 static int arr18_sizeof[(sizeof(struct t18) == 0) ? 0 : -1];
188 struct t19
190 char foo1;
191 long foo2 : 1;
192 char : 0;
193 long foo3 : 32;
194 char bar;
196 static int arr19_offset[(offsetof(struct t19, bar) == 8) ? 0 : -1];
197 static int arr19_sizeof[(sizeof(struct t19) == 12) ? 0 : -1];
199 struct t20
201 short : 0;
202 int foo : 1;
203 long : 0;
204 char bar;
206 static int arr20_offset[(offsetof(struct t20, bar) == 4) ? 0 : -1];
207 static int arr20_sizeof[(sizeof(struct t20) == 8) ? 0 : -1];
209 struct t21
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;
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];
235 int main() {
236 return 0;