brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · d3bc441 Raw
113 lines · cpp
1// RUN: %clang_cc1 -triple powerpc-ibm-aix-xcoff -fdump-record-layouts \2// RUN:     -fsyntax-only %s | \3// RUN:   FileCheck --check-prefixes=CHECK,CHECK32 %s4 5// RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -fdump-record-layouts \6// RUN:     -fsyntax-only %s | \7// RUN:   FileCheck --check-prefixes=CHECK,CHECK64 %s8 9namespace test1 {10struct A {11  double d1;12  virtual void boo() {}13};14 15struct B {16  double d2;17  A a;18};19 20struct C : public A {21  double d3;22};23 24int i = sizeof(B);25int j = sizeof(C);26 27// CHECK:      *** Dumping AST Record Layout28// CHECK-NEXT:            0 | struct test1::A29// CHECK-NEXT:            0 |   (A vtable pointer)30// CHECK32-NEXT:          4 |   double d131// CHECK32-NEXT:            | [sizeof=12, dsize=12, align=4, preferredalign=4,32// CHECK32-NEXT:            |  nvsize=12, nvalign=4, preferrednvalign=4]33// CHECK64-NEXT:          8 |   double d134// CHECK64-NEXT:            | [sizeof=16, dsize=16, align=8, preferredalign=8,35// CHECK64-NEXT:            |  nvsize=16, nvalign=8, preferrednvalign=8]36 37// CHECK:      *** Dumping AST Record Layout38// CHECK-NEXT:            0 | struct test1::B39// CHECK-NEXT:            0 |   double d240// CHECK-NEXT:            8 |   struct test1::A a41// CHECK-NEXT:            8 |     (A vtable pointer)42// CHECK32-NEXT:         12 |     double d143// CHECK32-NEXT:            | [sizeof=24, dsize=20, align=4, preferredalign=8,44// CHECK32-NEXT:            |  nvsize=20, nvalign=4, preferrednvalign=8]45// CHECK64-NEXT:         16 |     double d146// CHECK64-NEXT:            | [sizeof=24, dsize=24, align=8, preferredalign=8,47// CHECK64-NEXT:            |  nvsize=24, nvalign=8, preferrednvalign=8]48 49// CHECK:      *** Dumping AST Record Layout50// CHECK-NEXT:            0 | struct test1::C51// CHECK-NEXT:            0 |   struct test1::A (primary base)52// CHECK-NEXT:            0 |     (A vtable pointer)53// CHECK32-NEXT:          4 |     double d154// CHECK32-NEXT:         12 |   double d355// CHECK32-NEXT:            | [sizeof=20, dsize=20, align=4, preferredalign=4,56// CHECK32-NEXT:            |  nvsize=20, nvalign=4, preferrednvalign=4]57// CHECK64-NEXT:          8 |     double d158// CHECK64-NEXT:         16 |   double d359// CHECK64-NEXT:            | [sizeof=24, dsize=24, align=8, preferredalign=8,60// CHECK64-NEXT:            |  nvsize=24, nvalign=8, preferrednvalign=8]61 62} // namespace test163 64namespace test2 {65struct A {66  long long l1;67};68 69struct B : public virtual A {70  double d2;71};72 73#pragma pack(2)74struct C : public virtual A {75  double __attribute__((aligned(4))) d3;76};77 78int i = sizeof(B);79int j = sizeof(C);80 81// CHECK:      *** Dumping AST Record Layout82// CHECK-NEXT:            0 | struct test2::A83// CHECK-NEXT:            0 |   long long l184// CHECK-NEXT:              | [sizeof=8, dsize=8, align=8, preferredalign=8,85// CHECK-NEXT:              |  nvsize=8, nvalign=8, preferrednvalign=8]86 87// CHECK:      *** Dumping AST Record Layout88// CHECK-NEXT:            0 | struct test2::B89// CHECK-NEXT:            0 |   (B vtable pointer)90// CHECK32-NEXT:          4 |   double d291// CHECK64-NEXT:          8 |   double d292// CHECK-NEXT:           16 |   struct test2::A (virtual base)93// CHECK-NEXT:           16 |     long long l194// CHECK-NEXT:              | [sizeof=24, dsize=24, align=8, preferredalign=8,95// CHECK32-NEXT:            |  nvsize=12, nvalign=4, preferrednvalign=4]96// CHECK64-NEXT:            |  nvsize=16, nvalign=8, preferrednvalign=8]97 98// CHECK:      *** Dumping AST Record Layout99// CHECK-NEXT:            0 | struct test2::C100// CHECK-NEXT:            0 |   (C vtable pointer)101// CHECK32-NEXT:          4 |   double d3102// CHECK32-NEXT:         12 |   struct test2::A (virtual base)103// CHECK32-NEXT:         12 |     long long l1104// CHECK32-NEXT:            | [sizeof=20, dsize=20, align=2, preferredalign=2,105// CHECK32-NEXT:            |  nvsize=12, nvalign=2, preferrednvalign=2]106// CHECK64-NEXT:          8 |   double d3107// CHECK64-NEXT:         16 |   struct test2::A (virtual base)108// CHECK64-NEXT:         16 |     long long l1109// CHECK64-NEXT:            | [sizeof=24, dsize=24, align=2, preferredalign=2,110// CHECK64-NEXT:            |  nvsize=16, nvalign=2, preferrednvalign=2]111 112} // namespace test2113