// 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; | |
} | |