// RUN: %clang_cc1 -emit-llvm-only -triple x86_64-apple-darwin9 %s // rdar://8823265 extern void abort(void); #define ATTR __attribute__((__ms_struct__)) struct { char foo; long : 0; char : 0; int : 0; char bar; } ATTR t1 = {'a', 'b'}; struct { char bar0; long : 0; int : 0; char bar1; char bar2; long : 0; char bar3; char bar4; char : 0; char bar5; char bar6; char : 0; char bar7; char bar8; } ATTR t2 = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'}; struct { int : 0; int i1; int : 0; int i2; int : 0; int i3; int : 0; int i4; } t3 = {1,2,3,4}; int main() { if (sizeof(t1) != 2) abort(); if (t1.foo != 'a') abort(); if (t1.bar != 'b') abort(); t1.foo = 'c'; t1.bar = 'd'; if (t1.foo != 'c') abort(); if (t1.bar != 'd') abort(); if (sizeof(t2) != 9) abort(); if (t2.bar0 != 'a' || t2.bar8 != 'i') abort(); if (sizeof(t3) != 16) abort(); if (t3.i1 != 1 || t3.i4 != 4) abort(); return 0; } |