1// RUN: %clang_cc1 -emit-llvm-only -triple x86_64-apple-darwin9 %s 2// rdar://8823265 3 4extern void abort(void); 5#define ATTR __attribute__((__ms_struct__)) 6 7struct 8{ 9 char foo; 10 long : 0; 11 char : 0; 12 int : 0; 13 char bar; 14} ATTR t1 = {'a', 'b'}; 15 16struct 17{ 18 char bar0; 19 long : 0; 20 int : 0; 21 char bar1; 22 char bar2; 23 long : 0; 24 char bar3; 25 char bar4; 26 char : 0; 27 char bar5; 28 char bar6; 29 char : 0; 30 char bar7; 31 char bar8; 32} ATTR t2 = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'}; 33 34struct { 35 int : 0; 36 int i1; 37 int : 0; 38 int i2; 39 int : 0; 40 int i3; 41 int : 0; 42 int i4; 43} t3 = {1,2,3,4}; 44 45int main() { 46 if (sizeof(t1) != 2) 47 abort(); 48 if (t1.foo != 'a') 49 abort(); 50 if (t1.bar != 'b') 51 abort(); 52 t1.foo = 'c'; 53 t1.bar = 'd'; 54 if (t1.foo != 'c') 55 abort(); 56 if (t1.bar != 'd') 57 abort(); 58 if (sizeof(t2) != 9) 59 abort(); 60 if (t2.bar0 != 'a' || t2.bar8 != 'i') 61 abort(); 62 if (sizeof(t3) != 16) 63 abort(); 64 if (t3.i1 != 1 || t3.i4 != 4) 65 abort(); 66 return 0; 67} 68 69