blob: 25c0ba2332611bc70621061891089b4d3cd7d9b6 [file] [log] [blame]
Fariborz Jahanian855a8e72011-05-03 20:21:04 +00001// RUN: %clang_cc1 -emit-llvm-only -triple x86_64-apple-darwin9 %s
2// rdar://8823265
3
4#define ATTR __attribute__((__ms_struct__))
5
6struct {
Chad Rosierfc540162011-08-04 21:26:30 +00007 unsigned int bf_1 : 12;
8 unsigned int : 0;
9 unsigned int bf_2 : 12;
Fariborz Jahanian855a8e72011-05-03 20:21:04 +000010} ATTR t1;
11static int a1[(sizeof(t1) == 8) -1];
12
13struct
14{
Chad Rosierfc540162011-08-04 21:26:30 +000015 char foo : 4;
16 short : 0;
17 char bar;
Fariborz Jahanian855a8e72011-05-03 20:21:04 +000018} ATTR t2;
19static int a2[(sizeof(t2) == 4) -1];
20
21#pragma ms_struct on
22struct
23{
Chad Rosierfc540162011-08-04 21:26:30 +000024 char foo : 4;
25 short : 0;
26 char bar;
Fariborz Jahanian855a8e72011-05-03 20:21:04 +000027} t3;
28#pragma ms_struct off
29static int a3[(sizeof(t3) == 4) -1];
30
31struct
32{
33 char foo : 6;
34 long : 0;
35} ATTR t4;
36static int a4[(sizeof(t4) == 8) -1];
37
38struct
39{
40 char foo : 4;
41 short : 0;
42 char bar : 8;
43} ATTR t5;
44static int a5[(sizeof(t5) == 4) -1];
45
Fariborz Jahaniancc0f9f12011-05-03 22:07:14 +000046struct
47{
Chad Rosierfc540162011-08-04 21:26:30 +000048 char foo : 4;
49 short : 0;
50 long : 0;
51 char bar;
Fariborz Jahaniancc0f9f12011-05-03 22:07:14 +000052} ATTR t6;
53static int a6[(sizeof(t6) == 4) -1];
54
55struct
56{
Chad Rosierfc540162011-08-04 21:26:30 +000057 char foo : 4;
58 long : 0;
59 short : 0;
60 char bar;
Fariborz Jahaniancc0f9f12011-05-03 22:07:14 +000061} ATTR t7;
62static int a7[(sizeof(t7) == 16) -1];
63
64struct
65{
Chad Rosierfc540162011-08-04 21:26:30 +000066 char foo : 4;
67 short : 0;
68 long : 0;
69 char bar:7;
Fariborz Jahaniancc0f9f12011-05-03 22:07:14 +000070} ATTR t8;
71static int a8[(sizeof(t8) == 4) -1];
72
73struct
74{
Chad Rosierfc540162011-08-04 21:26:30 +000075 char foo : 4;
76 long : 0;
77 short : 0;
78 char bar: 8;
Fariborz Jahaniancc0f9f12011-05-03 22:07:14 +000079} ATTR t9;
80static int a9[(sizeof(t9) == 16) -1];
81
82struct
83{
Chad Rosierfc540162011-08-04 21:26:30 +000084 char foo : 4;
85 char : 0;
86 short : 0;
87 int : 0;
88 long :0;
89 char bar;
Fariborz Jahaniancc0f9f12011-05-03 22:07:14 +000090} ATTR t10;
91static int a10[(sizeof(t10) == 2) -1];