brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.3 KiB · 8d377bc Raw
342 lines · c
1// RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple i686-pc-win32 -fms-extensions -fdump-record-layouts %s 2>/dev/null \2// RUN:            | FileCheck %s3// RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple x86_64-pc-win32 -fms-extensions -fdump-record-layouts %s 2>/dev/null \4// RUN:            | FileCheck %s5 6typedef struct A {7	char x;8	int a : 22;9	int : 0;10	int c : 10;11	char b : 3;12	char d: 4;13	short y;14} A;15 16// CHECK:*** Dumping AST Record Layout17// CHECK-NEXT:      0 | struct A18// CHECK-NEXT:      0 |   char x19// CHECK-NEXT: 4:0-21 |   int a20// CHECK-NEXT:    8:- |   int21// CHECK-NEXT:  8:0-9 |   int c22// CHECK-NEXT: 12:0-2 |   char b23// CHECK-NEXT: 12:3-6 |   char d24// CHECK-NEXT:     14 |   short y25// CHECK-NEXT:        | [sizeof=16, align=4]26 27typedef struct B {28	char x;29	int : 0;30	short a : 4;31	char y;32} B;33 34// CHECK:*** Dumping AST Record Layout35// CHECK-NEXT:      0 | struct B36// CHECK-NEXT:      0 |   char x37// CHECK-NEXT:    1:- |   int38// CHECK-NEXT:  2:0-3 |   short a39// CHECK-NEXT:      4 |   char y40// CHECK-NEXT:        | [sizeof=6, align=2]41 42typedef struct C {43	char x;44	short a : 4;45	int : 0;46	char y;47} C;48 49// CHECK:*** Dumping AST Record Layout50// CHECK-NEXT:      0 | struct C51// CHECK-NEXT:      0 |   char x52// CHECK-NEXT:  2:0-3 |   short a53// CHECK-NEXT:    4:- |   int54// CHECK-NEXT:      4 |   char y55// CHECK-NEXT:        | [sizeof=8, align=4]56 57typedef struct D {58	char x;59	short : 0;60	int : 0;61	char y;62} D;63 64// CHECK:*** Dumping AST Record Layout65// CHECK-NEXT:      0 | struct D66// CHECK-NEXT:      0 |   char x67// CHECK-NEXT:    1:- |   short68// CHECK-NEXT:    1:- |   int69// CHECK-NEXT:      1 |   char y70// CHECK-NEXT:        | [sizeof=2, align=1]71 72typedef union E {73	char x;74	long long a : 3;75	int b : 3;76	long long : 0;77	short y;78} E;79 80 81// CHECK:*** Dumping AST Record Layout82// CHECK-NEXT:      0 | union E83// CHECK-NEXT:      0 |   char x84// CHECK-NEXT:  0:0-2 |   long long a85// CHECK-NEXT:  0:0-2 |   int b86// CHECK-NEXT:    0:- |   long long87// CHECK-NEXT:      0 |   short88// CHECK-NEXT:        | [sizeof=8, align=2]89 90typedef struct F {91	char x;92	char a : 3;93	char b : 3;94	char c : 3;95	short d : 6;96	short e : 6;97	short f : 6;98	short g : 11;99	short h : 11;100	short i : 11;101	short y;102} F;103 104// CHECK:*** Dumping AST Record Layout105// CHECK-NEXT:      0 | struct F106// CHECK-NEXT:      0 |   char x107// CHECK-NEXT:  1:0-2 |   char a108// CHECK-NEXT:  1:3-5 |   char b109// CHECK-NEXT:  2:0-2 |   char c110// CHECK-NEXT:  4:0-5 |   short d111// CHECK-NEXT: 4:6-11 |   short e112// CHECK-NEXT:  6:0-5 |   short f113// CHECK-NEXT: 8:0-10 |   short g114// CHECK-NEXT:10:0-10 |   short h115// CHECK-NEXT:12:0-10 |   short i116// CHECK-NEXT:     14 |   short y117// CHECK-NEXT:        | [sizeof=16, align=2]118 119typedef union G {120	char x;121	int a : 3;122	int : 0;123	long long : 0;124	short y;125} G;126 127// CHECK:*** Dumping AST Record Layout128// CHECK-NEXT:      0 | union G129// CHECK-NEXT:      0 |   char x130// CHECK-NEXT:  0:0-2 |   int a131// CHECK-NEXT:    0:- |   int132// CHECK-NEXT:    0:- |   long long133// CHECK-NEXT:      0 |   short y134// CHECK-NEXT:        | [sizeof=4, align=2]135 136typedef struct H {137	unsigned short a : 1;138	unsigned char : 0;139	unsigned long : 0;140	unsigned short c : 1;141} H;142 143// CHECK:*** Dumping AST Record Layout144// CHECK-NEXT:      0 | struct H145// CHECK-NEXT:  0:0-0 |   unsigned short a146// CHECK-NEXT:    2:- |   unsigned char147// CHECK-NEXT:    2:- |   unsigned long148// CHECK-NEXT:  2:0-0 |   unsigned short c149// CHECK-NEXT:        | [sizeof=4, align=2]150 151typedef struct I {152	short : 8;153	__declspec(align(16)) short : 8;154} I;155 156 157// CHECK:*** Dumping AST Record Layout158// CHECK-NEXT:      0 | struct I159// CHECK-NEXT:  0:0-7 |   short160// CHECK-NEXT:  1:0-7 |   short161// CHECK-NEXT:        | [sizeof=2, align=2]162 163#pragma pack(push, 1)164 165typedef struct A1 {166	char x;167	int a : 22;168	int : 0;169	int c : 10;170	char b : 3;171	char d: 4;172	short y;173} A1;174 175// CHECK:*** Dumping AST Record Layout176// CHECK-NEXT:      0 | struct A1177// CHECK-NEXT:      0 |   char x178// CHECK-NEXT: 1:0-21 |   int a179// CHECK-NEXT:    5:- |   int180// CHECK-NEXT:  5:0-9 |   int c181// CHECK-NEXT:  9:0-2 |   char b182// CHECK-NEXT:  9:3-6 |   char d183// CHECK-NEXT:     10 |   short y184// CHECK-NEXT:        | [sizeof=12, align=1]185 186typedef struct B1 {187	char x;188	int : 0;189	short a : 4;190	char y;191} B1;192 193// CHECK:*** Dumping AST Record Layout194// CHECK-NEXT:      0 | struct B1195// CHECK-NEXT:      0 |   char x196// CHECK-NEXT:    1:- |   int197// CHECK-NEXT:  1:0-3 |   short198// CHECK-NEXT:      3 |   char y199// CHECK-NEXT:        | [sizeof=4, align=1]200 201typedef struct C1 {202	char x;203	short a : 4;204	int : 0;205	char y;206} C1;207 208// CHECK:*** Dumping AST Record Layout209// CHECK-NEXT:      0 | struct C1210// CHECK-NEXT:      0 |   char x211// CHECK-NEXT:  1:0-3 |   short212// CHECK-NEXT:    3:- |   int213// CHECK-NEXT:      3 |   char y214// CHECK-NEXT:        | [sizeof=4, align=1]215 216typedef struct D1 {217	char x;218	short : 0;219	int : 0;220	char y;221} D1;222 223// CHECK:*** Dumping AST Record Layout224// CHECK-NEXT:      0 | struct D1225// CHECK-NEXT:      0 |   char x226// CHECK-NEXT:    1:- |   short227// CHECK-NEXT:    1:- |   int228// CHECK-NEXT:      1 |   char y229// CHECK-NEXT:        | [sizeof=2, align=1]230 231typedef union E1 {232	char x;233	long long a : 3;234	int b : 3;235	long long : 0;236	short y;237} E1;238 239// CHECK:*** Dumping AST Record Layout240// CHECK-NEXT:      0 | union E1241// CHECK-NEXT:      0 |   char x242// CHECK-NEXT:  0:0-2 |   long long a243// CHECK-NEXT:  0:0-2 |   int b244// CHECK-NEXT:    0:- |   long long245// CHECK-NEXT:      0 |   short y246// CHECK-NEXT:        | [sizeof=8, align=1]247 248typedef struct F1 {249	char x;250	char a : 3;251	char b : 3;252	char c : 3;253	short d : 6;254	short e : 6;255	short f : 6;256	short g : 11;257	short h : 11;258	short i : 11;259	short y;260} F1;261 262// CHECK:*** Dumping AST Record Layout263// CHECK-NEXT:      0 | struct F1264// CHECK-NEXT:      0 |   char x265// CHECK-NEXT:  1:0-2 |   char a266// CHECK-NEXT:  1:3-5 |   char b267// CHECK-NEXT:  2:0-2 |   char c268// CHECK-NEXT:  3:0-5 |   short d269// CHECK-NEXT: 3:6-11 |   short e270// CHECK-NEXT:  5:0-5 |   short f271// CHECK-NEXT: 7:0-10 |   short g272// CHECK-NEXT: 9:0-10 |   short h273// CHECK-NEXT:11:0-10 |   short i274// CHECK-NEXT:     13 |   short y275// CHECK-NEXT:        | [sizeof=15, align=1]276 277typedef union G1 {278	char x;279	int a : 3;280	int : 0;281	long long : 0;282	short y;283} G1;284 285// CHECK:*** Dumping AST Record Layout286// CHECK-NEXT:      0 | union G1287// CHECK-NEXT:      0 |   char x288// CHECK-NEXT:  0:0-2 |   int a289// CHECK-NEXT:    0:- |   int290// CHECK-NEXT:    0:- |   long long291// CHECK-NEXT:      0 |   short y292// CHECK-NEXT:        | [sizeof=4, align=1]293 294typedef struct H1 {295	unsigned long a : 1;296	unsigned char : 0;297	unsigned long : 0;298	unsigned long c : 1;299} H1;300 301// CHECK:*** Dumping AST Record Layout302// CHECK-NEXT:      0 | struct H1303// CHECK-NEXT:  0:0-0 |   unsigned long a304// CHECK-NEXT:    4:- |   unsigned char305// CHECK-NEXT:    4:- |   unsigned long306// CHECK-NEXT:  4:0-0 |   unsigned long c307// CHECK-NEXT:        | [sizeof=8, align=1]308 309typedef struct I1 {310	short : 8;311	__declspec(align(16)) short : 8;312} I1;313 314// CHECK:*** Dumping AST Record Layout315// CHECK-NEXT:      0 | struct I1316// CHECK-NEXT:  0:0-7 |   short317// CHECK-NEXT:  1:0-7 |   short318// CHECK-NEXT:        | [sizeof=2, align=1]319 320#pragma pack(pop)321 322int x[323sizeof(A ) +324sizeof(B ) +325sizeof(C ) +326sizeof(D ) +327sizeof(E ) +328sizeof(F ) +329sizeof(G ) +330sizeof(H ) +331sizeof(I ) +332sizeof(A1) +333sizeof(B1) +334sizeof(C1) +335sizeof(D1) +336sizeof(E1) +337sizeof(F1) +338sizeof(G1) +339sizeof(H1) +340sizeof(I1) +3410];342