brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 470f4df Raw
159 lines · cpp
1// RUN: %clang_cc1 -triple powerpc-ibm-aix-xcoff -fdump-record-layouts \2// RUN:     -fsyntax-only %s | \3// RUN:   FileCheck %s4 5// RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -fdump-record-layouts \6// RUN:     -fsyntax-only %s | \7// RUN:   FileCheck %s8 9struct Empty {};10 11struct A {12  double d;13};14 15// CHECK:     *** Dumping AST Record Layout16// CHECK-NEXT:          0 | struct Empty (empty)17// CHECK-NEXT:            | [sizeof=1, dsize=1, align=1, preferredalign=1,18// CHECK-NEXT:            |  nvsize=1, nvalign=1, preferrednvalign=1]19 20// CHECK:     *** Dumping AST Record Layout21// CHECK-NEXT:          0 | struct A22// CHECK-NEXT:          0 |   double d23// CHECK-NEXT:            | [sizeof=8, dsize=8, align=4, preferredalign=8,24// CHECK-NEXT:            |  nvsize=8, nvalign=4, preferrednvalign=8]25 26struct B {27  ~B();28 29  Empty emp;30  A a;31  char c;32};33 34struct B1 {35  [[no_unique_address]] B b;36  char ext[7];37};38 39// CHECK:     *** Dumping AST Record Layout40// CHECK-NEXT:          0 | struct B41// CHECK-NEXT:          0 |   struct Empty emp (empty)42// CHECK-NEXT:          4 |   struct A a43// CHECK-NEXT:          4 |     double d44// CHECK-NEXT:         12 |   char c45// CHECK-NEXT:            | [sizeof=16, dsize=13, align=4, preferredalign=4,46// CHECK-NEXT:            |  nvsize=13, nvalign=4, preferrednvalign=4]47 48// CHECK:     *** Dumping AST Record Layout49// CHECK-NEXT:          0 | struct B150// CHECK-NEXT:          0 |   struct B b51// CHECK-NEXT:          0 |     struct Empty emp (empty)52// CHECK-NEXT:          4 |     struct A a53// CHECK-NEXT:          4 |       double d54// CHECK-NEXT:         12 |     char c55// CHECK-NEXT:         13 |   char[7] ext56// CHECK-NEXT:            | [sizeof=20, dsize=20, align=4, preferredalign=4,57// CHECK-NEXT:            |  nvsize=20, nvalign=4, preferrednvalign=4]58 59struct C {60  ~C();61 62  [[no_unique_address]] Empty emp;63  A a;64  char c;65};66 67struct C1 {68  [[no_unique_address]] C c;69  char ext[7];70};71 72// CHECK:     *** Dumping AST Record Layout73// CHECK-NEXT:          0 | struct C74// CHECK-NEXT:          0 |   struct Empty emp (empty)75// CHECK-NEXT:          0 |   struct A a76// CHECK-NEXT:          0 |     double d77// CHECK-NEXT:          8 |   char c78// CHECK-NEXT:            | [sizeof=16, dsize=9, align=4, preferredalign=8,79// CHECK-NEXT:            |  nvsize=9, nvalign=4, preferrednvalign=8]80 81// CHECK:     *** Dumping AST Record Layout82// CHECK-NEXT:          0 | struct C183// CHECK-NEXT:          0 |   struct C c84// CHECK-NEXT:          0 |     struct Empty emp (empty)85// CHECK-NEXT:          0 |     struct A a86// CHECK-NEXT:          0 |       double d87// CHECK-NEXT:          8 |     char c88// CHECK-NEXT:          9 |   char[7] ext89// CHECK-NEXT:            | [sizeof=16, dsize=16, align=4, preferredalign=8,90// CHECK-NEXT:            |  nvsize=16, nvalign=4, preferrednvalign=8]91 92struct D {93  ~D();94 95  [[no_unique_address]] char notEmp;96  A a;97  char c;98};99 100struct D1 {101  [[no_unique_address]] D d;102  char ext[7];103};104 105// CHECK:     *** Dumping AST Record Layout106// CHECK-NEXT:          0 | struct D107// CHECK-NEXT:          0 |   char notEmp108// CHECK-NEXT:          4 |   struct A a109// CHECK-NEXT:          4 |     double d110// CHECK-NEXT:         12 |   char c111// CHECK-NEXT:            | [sizeof=16, dsize=13, align=4, preferredalign=4,112// CHECK-NEXT:            |  nvsize=13, nvalign=4, preferrednvalign=4]113 114// CHECK:     *** Dumping AST Record Layout115// CHECK-NEXT:          0 | struct D1116// CHECK-NEXT:          0 |   struct D d117// CHECK-NEXT:          0 |     char notEmp118// CHECK-NEXT:          4 |     struct A a119// CHECK-NEXT:          4 |       double d120// CHECK-NEXT:         12 |     char c121// CHECK-NEXT:         13 |   char[7] ext122// CHECK-NEXT:            | [sizeof=20, dsize=20, align=4, preferredalign=4,123// CHECK-NEXT:            |  nvsize=20, nvalign=4, preferrednvalign=4]124 125struct E {126  [[no_unique_address]] Empty emp;127  int : 0;128  double d;129};130 131// CHECK:     *** Dumping AST Record Layout132// CHECK-NEXT:          0 | struct E133// CHECK-NEXT:          0 |   struct Empty emp (empty)134// CHECK-NEXT:        0:- |   int135// CHECK-NEXT:          0 |   double d136// CHECK-NEXT:            | [sizeof=8, dsize=8, align=4, preferredalign=4,137// CHECK-NEXT:            |  nvsize=8, nvalign=4, preferrednvalign=4]138 139struct F {140  [[no_unique_address]] Empty emp, emp2;141  double d;142};143 144// CHECK:      *** Dumping AST Record Layout145// CHECK-NEXT: 0 | struct F146// CHECK-NEXT: 0 |   struct Empty emp (empty)147// CHECK-NEXT: 1 |   struct Empty emp2 (empty)148// CHECK-NEXT: 0 |   double d149// CHECK-NEXT:   | [sizeof=8, dsize=8, align=4, preferredalign=8,150// CHECK-NEXT:   |  nvsize=8, nvalign=4, preferrednvalign=8]151 152int a = sizeof(Empty);153int b = sizeof(A);154int c = sizeof(B1);155int d = sizeof(C1);156int e = sizeof(D1);157int f = sizeof(E);158int g = sizeof(F);159