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