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 struct { 7*67e74705SXin Li unsigned int bf_1 : 12; 8*67e74705SXin Li unsigned int : 0; 9*67e74705SXin Li unsigned int bf_2 : 12; 10*67e74705SXin Li } ATTR t1; 11*67e74705SXin Li static int a1[(sizeof(t1) == 8) -1]; 12*67e74705SXin Li 13*67e74705SXin Li struct 14*67e74705SXin Li { 15*67e74705SXin Li char foo : 4; 16*67e74705SXin Li short : 0; 17*67e74705SXin Li char bar; 18*67e74705SXin Li } ATTR t2; 19*67e74705SXin Li static int a2[(sizeof(t2) == 4) -1]; 20*67e74705SXin Li 21*67e74705SXin Li #pragma ms_struct on 22*67e74705SXin Li struct 23*67e74705SXin Li { 24*67e74705SXin Li char foo : 4; 25*67e74705SXin Li short : 0; 26*67e74705SXin Li char bar; 27*67e74705SXin Li } t3; 28*67e74705SXin Li #pragma ms_struct off 29*67e74705SXin Li static int a3[(sizeof(t3) == 4) -1]; 30*67e74705SXin Li 31*67e74705SXin Li struct 32*67e74705SXin Li { 33*67e74705SXin Li char foo : 6; 34*67e74705SXin Li long : 0; 35*67e74705SXin Li } ATTR t4; 36*67e74705SXin Li static int a4[(sizeof(t4) == 8) -1]; 37*67e74705SXin Li 38*67e74705SXin Li struct 39*67e74705SXin Li { 40*67e74705SXin Li char foo : 4; 41*67e74705SXin Li short : 0; 42*67e74705SXin Li char bar : 8; 43*67e74705SXin Li } ATTR t5; 44*67e74705SXin Li static int a5[(sizeof(t5) == 4) -1]; 45*67e74705SXin Li 46*67e74705SXin Li struct 47*67e74705SXin Li { 48*67e74705SXin Li char foo : 4; 49*67e74705SXin Li short : 0; 50*67e74705SXin Li long : 0; 51*67e74705SXin Li char bar; 52*67e74705SXin Li } ATTR t6; 53*67e74705SXin Li static int a6[(sizeof(t6) == 4) -1]; 54*67e74705SXin Li 55*67e74705SXin Li struct 56*67e74705SXin Li { 57*67e74705SXin Li char foo : 4; 58*67e74705SXin Li long : 0; 59*67e74705SXin Li short : 0; 60*67e74705SXin Li char bar; 61*67e74705SXin Li } ATTR t7; 62*67e74705SXin Li static int a7[(sizeof(t7) == 16) -1]; 63*67e74705SXin Li 64*67e74705SXin Li struct 65*67e74705SXin Li { 66*67e74705SXin Li char foo : 4; 67*67e74705SXin Li short : 0; 68*67e74705SXin Li long : 0; 69*67e74705SXin Li char bar:7; 70*67e74705SXin Li } ATTR t8; 71*67e74705SXin Li static int a8[(sizeof(t8) == 4) -1]; 72*67e74705SXin Li 73*67e74705SXin Li struct 74*67e74705SXin Li { 75*67e74705SXin Li char foo : 4; 76*67e74705SXin Li long : 0; 77*67e74705SXin Li short : 0; 78*67e74705SXin Li char bar: 8; 79*67e74705SXin Li } ATTR t9; 80*67e74705SXin Li static int a9[(sizeof(t9) == 16) -1]; 81*67e74705SXin Li 82*67e74705SXin Li struct 83*67e74705SXin Li { 84*67e74705SXin Li char foo : 4; 85*67e74705SXin Li char : 0; 86*67e74705SXin Li short : 0; 87*67e74705SXin Li int : 0; 88*67e74705SXin Li long :0; 89*67e74705SXin Li char bar; 90*67e74705SXin Li } ATTR t10; 91*67e74705SXin Li static int a10[(sizeof(t10) == 2) -1]; 92