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 235 int main() { 236 return 0; 237 } 238 239