162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian// RUN: %clang_cc1 -emit-llvm-only -triple x86_64-apple-darwin9 %s 262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian// rdar://8823265 362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian#define ATTR __attribute__((__ms_struct__)) 562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 662055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstruct 762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian{ 862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char foo; 962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 1062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar; 1162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian} ATTR t1; 1262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 1362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstruct 1462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian{ 1562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char foo; 1662055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 1762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 1862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian int : 0; 1962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar; 2062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian} ATTR t2; 2162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 2262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstruct 2362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian{ 2462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char foo; 2562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 2662055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 2762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian int : 0; 2862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar; 2962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 3062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 3162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian} ATTR t3; 3262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 3362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstruct 3462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian{ 3562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 3662055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar; 3762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian} ATTR t4; 3862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 3962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstruct 4062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian{ 4162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 4262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 4362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 4462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar; 4562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian} ATTR t5; 4662055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 4762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstruct 4862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian{ 4962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 5062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 5162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 5262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar; 5362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian} ATTR t6; 5462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 5562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstruct 5662055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian{ 5762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char foo; 5862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 5962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian int : 0; 6062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar; 6162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar1; 6262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 6362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar2; 6462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar3; 6562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 6662055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar4; 6762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar5; 6862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 6962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar6; 7062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar7; 7162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian} ATTR t7; 7262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 7362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstruct 7462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian{ 7562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 7662055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 7762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 7862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian} ATTR t8; 7962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 8062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstruct 8162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian{ 8262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char foo; 8362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 8462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian int : 0; 8562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar; 8662055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar1; 8762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 8862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar2; 8962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar3; 9062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 9162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar4; 9262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar5; 9362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 9462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar6; 9562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar7; 9662055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian int i1; 9762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 9862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 9962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char :4; 10062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar8; 10162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 10262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar9; 10362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char bar10; 10462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian int i2; 10562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char : 0; 10662055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian long : 0; 10762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian char :4; 10862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian} ATTR t9; 10962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 110340fa242130c2d8d74c83edca0952e771aebe0e6Fariborz Jahanianstruct 111340fa242130c2d8d74c83edca0952e771aebe0e6Fariborz Jahanian{ 112340fa242130c2d8d74c83edca0952e771aebe0e6Fariborz Jahanian char foo: 8; 113340fa242130c2d8d74c83edca0952e771aebe0e6Fariborz Jahanian long : 0; 114340fa242130c2d8d74c83edca0952e771aebe0e6Fariborz Jahanian char bar; 115340fa242130c2d8d74c83edca0952e771aebe0e6Fariborz Jahanian} ATTR t10; 116340fa242130c2d8d74c83edca0952e771aebe0e6Fariborz Jahanian 11762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstatic int arr1[(sizeof(t1) == 2) -1]; 11862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstatic int arr2[(sizeof(t2) == 2) -1]; 11962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstatic int arr3[(sizeof(t3) == 2) -1]; 12062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstatic int arr4[(sizeof(t4) == 1) -1]; 12162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstatic int arr5[(sizeof(t5) == 1) -1]; 12262055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstatic int arr6[(sizeof(t6) == 1) -1]; 12362055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstatic int arr7[(sizeof(t7) == 9) -1]; 12462055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstatic int arr8[(sizeof(t8) == 0) -1]; 12562055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianstatic int arr9[(sizeof(t9) == 28) -1]; 126340fa242130c2d8d74c83edca0952e771aebe0e6Fariborz Jahanianstatic int arr10[(sizeof(t10) == 16) -1]; 12762055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 12862055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanianint main() { 12962055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian return 0; 13062055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian} 13162055b0618fafb4747e783ba3fedd7bc7d57d27dFariborz Jahanian 132