37 lines · cpp
1// RUN: %clang_cc1 -emit-llvm-only -triple %itanium_abi_triple -fdump-record-layouts %s 2>/dev/null \2// RUN: | FileCheck %s3 4// On z/OS, a bit-field has single byte alignment. Add aligned(4) on z/OS so the union has5// the same size & alignment as expected.6#ifdef __MVS__7#define ALIGN4 __attribute__((aligned(4)))8#else9#define ALIGN410#endif11 12union A {13 int f1 : 3 ALIGN4;14 A();15};16 17A::A() {}18 19union B {20 char f1 : 35 ALIGN4;21 B();22};23 24B::B() {}25 26// CHECK:*** Dumping AST Record Layout27// CHECK-NEXT: 0 | union A28// CHECK-NEXT: 0:0-2 | int f129// CHECK-NEXT: | [sizeof=4, dsize=1, align=4{{(, preferredalign=4,)?}}30// CHECK-NEXT: | nvsize=1, nvalign=4{{(, preferrednvalign=4)?}}]31 32// CHECK:*** Dumping AST Record Layout33// CHECK-NEXT: 0 | union B34// CHECK-NEXT: 0:0-34 | char f135// CHECK-NEXT: | [sizeof=8, dsize=5, align=4{{(, preferredalign=4,)?}}36// CHECK-NEXT: | nvsize=5, nvalign=4{{(, preferrednvalign=4)?}}]37