brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · f8cd79c Raw
121 lines · cpp
1// RUN: %clang_cc1 -fno-rtti -triple i686-pc-win32 -fdump-record-layouts -fsyntax-only %s 2>&1 \2// RUN:            | FileCheck %s3// RUN: %clang_cc1 -fno-rtti -triple x86_64-pc-win32 -fdump-record-layouts -fsyntax-only %s 2>/dev/null \4// RUN:            | FileCheck %s -check-prefix CHECK-X645 6struct B0 { int a; };7struct B1 { int a; };8 9struct A : virtual B0 { char a : 1; };10 11// CHECK: *** Dumping AST Record Layout12// CHECK: *** Dumping AST Record Layout13// CHECK-NEXT:    0 | struct A14// CHECK-NEXT:    0 |   (A vbtable pointer)15// CHECK-NEXT:    4:0-0 |   char a16// CHECK-NEXT:    8 |   struct B0 (virtual base)17// CHECK-NEXT:    8 |     int a18// CHECK-NEXT:      | [sizeof=12, align=419// CHECK-NEXT:      |  nvsize=8, nvalign=4]20// CHECK-X64: *** Dumping AST Record Layout21// CHECK-X64: *** Dumping AST Record Layout22// CHECK-X64-NEXT:    0 | struct A23// CHECK-X64-NEXT:    0 |   (A vbtable pointer)24// CHECK-X64-NEXT:    8:0-0 |   char a25// CHECK-X64-NEXT:   16 |   struct B0 (virtual base)26// CHECK-X64-NEXT:   16 |     int a27// CHECK-X64-NEXT:      | [sizeof=24, align=828// CHECK-X64-NEXT:      |  nvsize=16, nvalign=8]29 30struct B : virtual B0 { short a : 1; };31 32// CHECK: *** Dumping AST Record Layout33// CHECK-NEXT:    0 | struct B34// CHECK-NEXT:    0 |   (B vbtable pointer)35// CHECK-NEXT:    4:0-0 |   short a36// CHECK-NEXT:    8 |   struct B0 (virtual base)37// CHECK-NEXT:    8 |     int a38// CHECK-NEXT:      | [sizeof=12, align=439// CHECK-NEXT:      |  nvsize=8, nvalign=4]40// CHECK-X64: *** Dumping AST Record Layout41// CHECK-X64-NEXT:    0 | struct B42// CHECK-X64-NEXT:    0 |   (B vbtable pointer)43// CHECK-X64-NEXT:    8:0-0 |   short a44// CHECK-X64-NEXT:   16 |   struct B0 (virtual base)45// CHECK-X64-NEXT:   16 |     int a46// CHECK-X64-NEXT:      | [sizeof=24, align=847// CHECK-X64-NEXT:      |  nvsize=16, nvalign=8]48 49struct C : virtual B0 { char a : 1; char : 0; };50 51// CHECK: *** Dumping AST Record Layout52// CHECK-NEXT:    0 | struct C53// CHECK-NEXT:    0 |   (C vbtable pointer)54// CHECK-NEXT:    4:0-0 |   char a55// CHECK-NEXT:    5:- |   char56// CHECK-NEXT:    8 |   struct B0 (virtual base)57// CHECK-NEXT:    8 |     int a58// CHECK-NEXT:      | [sizeof=12, align=459// CHECK-NEXT:      |  nvsize=8, nvalign=4]60// CHECK-X64: *** Dumping AST Record Layout61// CHECK-X64-NEXT:    0 | struct C62// CHECK-X64-NEXT:    0 |   (C vbtable pointer)63// CHECK-X64-NEXT:    8:0-0 |   char a64// CHECK-X64-NEXT:    9:- |   char65// CHECK-X64-NEXT:   16 |   struct B0 (virtual base)66// CHECK-X64-NEXT:   16 |     int a67// CHECK-X64-NEXT:      | [sizeof=24, align=868// CHECK-X64-NEXT:      |  nvsize=16, nvalign=8]69 70struct D : virtual B0 { char a : 1; char b; };71 72// CHECK: *** Dumping AST Record Layout73// CHECK-NEXT:    0 | struct D74// CHECK-NEXT:    0 |   (D vbtable pointer)75// CHECK-NEXT:    4:0-0 |   char a76// CHECK-NEXT:    5 |   char b77// CHECK-NEXT:    8 |   struct B0 (virtual base)78// CHECK-NEXT:    8 |     int a79// CHECK-NEXT:      | [sizeof=12, align=480// CHECK-NEXT:      |  nvsize=8, nvalign=4]81// CHECK-X64: *** Dumping AST Record Layout82// CHECK-X64-NEXT:    0 | struct D83// CHECK-X64-NEXT:    0 |   (D vbtable pointer)84// CHECK-X64-NEXT:    8:0-0 |   char a85// CHECK-X64-NEXT:    9 |   char b86// CHECK-X64-NEXT:   16 |   struct B0 (virtual base)87// CHECK-X64-NEXT:   16 |     int a88// CHECK-X64-NEXT:      | [sizeof=24, align=889// CHECK-X64-NEXT:      |  nvsize=16, nvalign=8]90 91struct E : virtual B0, virtual B1 { long long : 1; };92// CHECK: *** Dumping AST Record Layout93// CHECK: *** Dumping AST Record Layout94// CHECK-NEXT:    0 | struct E95// CHECK-NEXT:    0 |   (E vbtable pointer)96// CHECK-NEXT:    8:0-0 |   long long97// CHECK-NEXT:   16 |   struct B0 (virtual base)98// CHECK-NEXT:   16 |     int a99// CHECK-NEXT:   20 |   struct B1 (virtual base)100// CHECK-NEXT:   20 |     int a101// CHECK-NEXT:      | [sizeof=24, align=8102// CHECK-NEXT:      |  nvsize=16, nvalign=8]103// CHECK-X64: *** Dumping AST Record Layout104// CHECK-X64: *** Dumping AST Record Layout105// CHECK-X64-NEXT:    0 | struct E106// CHECK-X64-NEXT:    0 |   (E vbtable pointer)107// CHECK-X64-NEXT:    8:0-0 |   long long108// CHECK-X64-NEXT:   16 |   struct B0 (virtual base)109// CHECK-X64-NEXT:   16 |     int a110// CHECK-X64-NEXT:   20 |   struct B1 (virtual base)111// CHECK-X64-NEXT:   20 |     int a112// CHECK-X64-NEXT:      | [sizeof=24, align=8113// CHECK-X64-NEXT:      |  nvsize=16, nvalign=8]114 115int a[116sizeof(A)+117sizeof(B)+118sizeof(C)+119sizeof(D)+120sizeof(E)];121