1f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian// RUN: %clang_cc1 -emit-llvm-only  -triple x86_64-apple-darwin9 %s
2f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian// rdar://8823265
3f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
4f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian#define ATTR __attribute__((__ms_struct__))
5f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
6f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian#define size_struct_0 1
7f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian#define size_struct_1 4
8f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian#define size_struct_2 24
9f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian#define size_struct_3 8
10f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian#define size_struct_4 32
11f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian#define size_struct_5 12
12f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian#define size_struct_6 40
13f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian#define size_struct_7 8
14f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian#define size_struct_8 20
15f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian#define size_struct_9 32
16f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
17f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct _struct_0
18f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian{
19f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  char member_0;
20f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian} ATTR;
21f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahaniantypedef struct _struct_0 struct_0;
22f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
23f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct _struct_1
24f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian{
25f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  char member_0;
26f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  short member_1:13;
27f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian} ATTR;
28f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahaniantypedef struct _struct_1 struct_1;
29f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
30f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct _struct_2
31f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian{
32f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  double member_0;
33f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned char member_1:8;
34f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  int member_2:32;
35f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned char member_3:5;
36f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  short member_4:14;
37f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  short member_5:13;
38f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned char:0;
39f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian} ATTR;
40f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahaniantypedef struct _struct_2 struct_2;
41f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
42f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct _struct_3
43f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian{
44f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned int member_0:26;
45f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned char member_1:2;
46f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
47f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian} ATTR;
48f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahaniantypedef struct _struct_3 struct_3;
49f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
50f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct _struct_4
51f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian{
52f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned char member_0:7;
53f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  double member_1;
54f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  double member_2;
55f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  short member_3:5;
56f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  char member_4:2;
57f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
58f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian} ATTR;
59f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahaniantypedef struct _struct_4 struct_4;
60f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
61f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct _struct_5
62f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian{
63f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned short member_0:12;
64f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  int member_1:1;
65f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned short member_2:6;
66f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
67f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian} ATTR;
68f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahaniantypedef struct _struct_5 struct_5;
69f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
70f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct _struct_6
71f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian{
72f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned char member_0:7;
73f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned int member_1:25;
74f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  char member_2:1;
75f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  double member_3;
76f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  short member_4:9;
77f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  double member_5;
78f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
79f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian} ATTR;
80f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahaniantypedef struct _struct_6 struct_6;
81f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
82f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct _struct_7
83f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian{
84f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  double member_0;
85f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
86f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian} ATTR;
87f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahaniantypedef struct _struct_7 struct_7;
88f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
89f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct _struct_8
90f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian{
91f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned char member_0:7;
92f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  int member_1:11;
93f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  int member_2:5;
94f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  int:0;
95f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  char member_4:8;
96f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned short member_5:4;
97f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned char member_6:3;
98f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  int member_7:23;
99f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
100f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian} ATTR;
101f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahaniantypedef struct _struct_8 struct_8;
102f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
103f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct _struct_9
104f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian{
105f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  double member_0;
106f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned int member_1:6;
107f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  int member_2:17;
108f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  double member_3;
109f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian  unsigned int member_4:22;
110f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
111f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian} ATTR;
112f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahaniantypedef struct _struct_9 struct_9;
113f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
114f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct_0 test_struct_0 = { 123 };
115f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct_1 test_struct_1 = { 82, 1081 };
116f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct_2 test_struct_2 = { 20.0, 31, 407760, 1, 14916, 6712 };
117f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct_3 test_struct_3 = { 64616999, 1 };
118f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct_4 test_struct_4 = { 61, 20.0, 20.0, 12, 0 };
119f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct_5 test_struct_5 = { 909, 1, 57 };
120f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct_6 test_struct_6 = { 12, 21355796, 0, 20.0, 467, 20.0 };
121f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct_7 test_struct_7 = { 20.0 };
122f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct_8 test_struct_8 = { 126, 1821, 22, 125, 6, 0, 2432638 };
123f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstruct_9 test_struct_9 = { 20.0, 3, 23957, 20.0, 1001631 };
124f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
125f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanian
126f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstatic int a0[(sizeof (struct_0) == size_struct_0) -1];
127f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstatic int a1[(sizeof (struct_1) == size_struct_1) -1];
128f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstatic int a2[(sizeof (struct_2) == size_struct_2) -1];
129f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstatic int a3[(sizeof (struct_3) == size_struct_3) -1];
130f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstatic int a4[(sizeof (struct_4) == size_struct_4) -1];
131f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstatic int a5[(sizeof (struct_5) == size_struct_5) -1];
132f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstatic int a6[(sizeof (struct_6) == size_struct_6) -1];
133f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstatic int a7[(sizeof (struct_7) == size_struct_7) -1];
134f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstatic int a8[(sizeof (struct_8) == size_struct_8) -1];
135f5ccd59dee929dc41f19097e90a2c3461665d01bFariborz Jahanianstatic int a9[(sizeof (struct_9) == size_struct_9) -1];
136