brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · fe917f3 Raw
147 lines · cpp
1// RUN: %clang_cc1 -triple powerpc-ibm-aix-xcoff -fdump-record-layouts \2// RUN:     -fxl-pragma-pack -fsyntax-only %s | \3// RUN:   FileCheck %s4 5// RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -fdump-record-layouts \6// RUN:     -fxl-pragma-pack -fsyntax-only %s | \7// RUN:   FileCheck %s8 9namespace test1 {10#pragma align(natural)11struct A {12  int i1;13};14 15struct B {16  double d1;17};18#pragma align(reset)19 20struct C : A, B {21  double d2;22};23 24int a = sizeof(C);25 26// CHECK:      *** Dumping AST Record Layout27// CHECK-NEXT:          0 | struct test1::A28// CHECK-NEXT:          0 |   int i129// CHECK-NEXT:            | [sizeof=4, dsize=4, align=4, preferredalign=4,30// CHECK-NEXT:            |  nvsize=4, nvalign=4, preferrednvalign=4]31 32// CHECK:      *** Dumping AST Record Layout33// CHECK-NEXT:          0 | struct test1::B34// CHECK-NEXT:          0 |   double d135// CHECK-NEXT:            | [sizeof=8, dsize=8, align=4, preferredalign=8,36// CHECK-NEXT:            |  nvsize=8, nvalign=4, preferrednvalign=8]37 38// CHECK:      *** Dumping AST Record Layout39// CHECK-NEXT:          0 | struct test1::C40// CHECK-NEXT:          0 |   struct test1::A (base)41// CHECK-NEXT:          0 |     int i142// CHECK-NEXT:          4 |   struct test1::B (base)43// CHECK-NEXT:          4 |     double d144// CHECK-NEXT:         12 |   double d245// CHECK-NEXT:            | [sizeof=20, dsize=20, align=4, preferredalign=4,46// CHECK-NEXT:            |  nvsize=20, nvalign=4, preferrednvalign=4]47 48} // namespace test149 50namespace test2 {51struct A {52  int i1;53  double d;54};55 56#pragma align(natural)57struct B : A {58  int i2;59};60#pragma align(reset)61 62int b = sizeof(B);63 64// CHECK:      *** Dumping AST Record Layout65// CHECK-NEXT:          0 | struct test2::A66// CHECK-NEXT:          0 |   int i167// CHECK-NEXT:          4 |   double d68// CHECK-NEXT:            | [sizeof=12, dsize=12, align=4, preferredalign=4,69// CHECK-NEXT:            |  nvsize=12, nvalign=4, preferrednvalign=4]70 71// CHECK:      *** Dumping AST Record Layout72// CHECK-NEXT:          0 | struct test2::B73// CHECK-NEXT:          0 |   struct test2::A (base)74// CHECK-NEXT:          0 |     int i175// CHECK-NEXT:          4 |     double d76// CHECK-NEXT:         12 |   int i277// CHECK-NEXT:            | [sizeof=16, dsize=16, align=4, preferredalign=4,78// CHECK-NEXT:            |  nvsize=16, nvalign=4, preferrednvalign=4]79 80} // namespace test281 82namespace test3 {83#pragma align(natural)84struct A {85  int i1;86  double d;87};88#pragma align(reset)89 90struct B {91  struct A a;92  int i2;93};94 95int c = sizeof(B);96 97// CHECK:      *** Dumping AST Record Layout98// CHECK-NEXT:          0 | struct test3::A99// CHECK-NEXT:          0 |   int i1100// CHECK-NEXT:          8 |   double d101// CHECK-NEXT:            | [sizeof=16, dsize=16, align=4, preferredalign=8,102// CHECK-NEXT:            |  nvsize=16, nvalign=4, preferrednvalign=8]103 104// CHECK:      *** Dumping AST Record Layout105// CHECK-NEXT:          0 | struct test3::B106// CHECK-NEXT:          0 |   struct test3::A a107// CHECK-NEXT:          0 |     int i1108// CHECK-NEXT:          8 |     double d109// CHECK-NEXT:         16 |   int i2110// CHECK-NEXT:            | [sizeof=24, dsize=24, align=4, preferredalign=8,111// CHECK-NEXT:            |  nvsize=24, nvalign=4, preferrednvalign=8]112 113} // namespace test3114 115namespace test4 {116struct A {117  int i1;118  double d;119};120 121#pragma align(natural)122struct B {123  int i2;124  struct A a;125};126#pragma align(reset)127 128int d = sizeof(B);129 130// CHECK:      *** Dumping AST Record Layout131// CHECK-NEXT:          0 | struct test4::A132// CHECK-NEXT:          0 |   int i1133// CHECK-NEXT:          4 |   double d134// CHECK-NEXT:            | [sizeof=12, dsize=12, align=4, preferredalign=4,135// CHECK-NEXT:            |  nvsize=12, nvalign=4, preferrednvalign=4]136 137// CHECK:      *** Dumping AST Record Layout138// CHECK-NEXT:          0 | struct test4::B139// CHECK-NEXT:          0 |   int i2140// CHECK-NEXT:          4 |   struct test4::A a141// CHECK-NEXT:          4 |     int i1142// CHECK-NEXT:          8 |     double d143// CHECK-NEXT:            | [sizeof=16, dsize=16, align=4, preferredalign=4,144// CHECK-NEXT:            |  nvsize=16, nvalign=4, preferrednvalign=4]145 146} // namespace test4147