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