1 // RUN: %clang_cc1 -emit-llvm-only -triple x86_64-apple-darwin9 %s 2 // rdar://8823265 3 4 extern void abort(void); 5 #define ATTR __attribute__((__ms_struct__)) 6 7 struct 8 { 9 char foo; 10 long : 0; 11 char : 0; 12 int : 0; 13 char bar; 14 } ATTR t1 = {'a', 'b'}; 15 16 struct 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 34 struct { 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 45 int 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