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