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