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