xref: /llvm-project/clang/test/Layout/aix-bitfield-alignment.cpp (revision 15f3cd6bfc670ba6106184a903eb04be059e5977)
1 // RUN: %clang_cc1 -triple powerpc-ibm-aix-xcoff -fdump-record-layouts \
2 // RUN:     -fsyntax-only -fxl-pragma-pack -x c++ %s | \
3 // RUN:   FileCheck --check-prefixes=CHECK %s
4 
5 // RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -fdump-record-layouts \
6 // RUN:     -fsyntax-only -fxl-pragma-pack -x c++ %s | \
7 // RUN:   FileCheck --check-prefixes=CHECK %s
8 
9 struct A {
10   bool b : 3;
11 };
12 
13 int a = sizeof(A);
14 
15 // CHECK:      *** Dumping AST Record Layout
16 // CHECK-NEXT:          0 | struct A
17 // CHECK-NEXT:      0:0-2 |   _Bool b
18 // CHECK-NEXT:            | [sizeof=4, dsize=4, align=4, preferredalign=4,
19 // CHECK-NEXT:            |  nvsize=4, nvalign=4, preferrednvalign=4]
20 
21 enum class Bool : bool { False = 0,
22                          True = 1 };
23 
24 struct B {
25   Bool b : 1;
26 };
27 
28 int b = sizeof(B);
29 
30 // CHECK:      *** Dumping AST Record Layout
31 // CHECK-NEXT:          0 | struct B
32 // CHECK-NEXT:      0:0-0 |   Bool b
33 // CHECK-NEXT:            | [sizeof=4, dsize=4, align=4, preferredalign=4,
34 // CHECK-NEXT:            |  nvsize=4, nvalign=4, preferrednvalign=4]
35 
36 enum LL : unsigned long long { val = 1 };
37