1855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian// RUN: %clang_cc1 -emit-llvm-only  -triple x86_64-apple-darwin9 %s
2855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian// rdar://8823265
3855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian
4855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian#define ATTR __attribute__((__ms_struct__))
5855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian
6855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanianstruct {
7fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  unsigned int bf_1 : 12;
8fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  unsigned int : 0;
9fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  unsigned int bf_2 : 12;
10855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian} ATTR t1;
11855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanianstatic int a1[(sizeof(t1) == 8) -1];
12855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian
13855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanianstruct
14855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian{
15fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char foo : 4;
16fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  short : 0;
17fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char bar;
18855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian} ATTR t2;
19855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanianstatic int a2[(sizeof(t2) == 4) -1];
20855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian
21855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian#pragma ms_struct on
22855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanianstruct
23855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian{
24fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char foo : 4;
25fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  short : 0;
26fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char bar;
27855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian} t3;
28855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian#pragma ms_struct off
29855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanianstatic int a3[(sizeof(t3) == 4) -1];
30855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian
31855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanianstruct
32855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian{
33855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian  char foo : 6;
34855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian  long : 0;
35855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian} ATTR t4;
36855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanianstatic int a4[(sizeof(t4) == 8) -1];
37855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian
38855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanianstruct
39855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian{
40855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian  char foo : 4;
41855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian  short : 0;
42855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian  char bar : 8;
43855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian} ATTR t5;
44855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanianstatic int a5[(sizeof(t5) == 4) -1];
45855a8e79f42e670b405b31efd3963f4d89732affFariborz Jahanian
46cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanianstruct
47cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian{
48fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char foo : 4;
49fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  short : 0;
50fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  long  : 0;
51fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char bar;
52cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian} ATTR t6;
53cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanianstatic int a6[(sizeof(t6) == 4) -1];
54cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian
55cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanianstruct
56cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian{
57fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char foo : 4;
58fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  long  : 0;
59fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  short : 0;
60fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char bar;
61cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian} ATTR t7;
62cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanianstatic int a7[(sizeof(t7) == 16) -1];
63cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian
64cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanianstruct
65cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian{
66fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char foo : 4;
67fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  short : 0;
68fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  long  : 0;
69fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char bar:7;
70cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian} ATTR t8;
71cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanianstatic int a8[(sizeof(t8) == 4) -1];
72cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian
73cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanianstruct
74cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian{
75fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char foo : 4;
76fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  long  : 0;
77fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  short : 0;
78fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char bar: 8;
79cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian} ATTR t9;
80cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanianstatic int a9[(sizeof(t9) == 16) -1];
81cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian
82cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanianstruct
83cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian{
84fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char foo : 4;
85fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char : 0;
86fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  short : 0;
87fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  int : 0;
88fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  long  :0;
89fc54016ead40df345b95d68b1f2d5e05a4a45f26Chad Rosier  char bar;
90cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanian} ATTR t10;
91cc0f9f1a3b5df7fd308ff3d800fbbbbff805157dFariborz Jahanianstatic int a10[(sizeof(t10) == 2) -1];
92