[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / clang / test / Layout / ms-x86-bitfields-vbases.cpp
bloba78fdad7e2ebb4b401209776ff1acbde92576279
1 // RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple i686-pc-win32 -fdump-record-layouts -fsyntax-only %s 2>&1 \
2 // RUN: | FileCheck %s
3 // RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple x86_64-pc-win32 -fdump-record-layouts -fsyntax-only %s 2>/dev/null \
4 // RUN: | FileCheck %s -check-prefix CHECK-X64
6 struct B0 { int a; };
7 struct B1 { int a; };
9 struct A : virtual B0 { char a : 1; };
11 // CHECK: *** Dumping AST Record Layout
12 // CHECK: *** Dumping AST Record Layout
13 // CHECK-NEXT: 0 | struct A
14 // CHECK-NEXT: 0 | (A vbtable pointer)
15 // CHECK-NEXT: 4:0-0 | char a
16 // CHECK-NEXT: 8 | struct B0 (virtual base)
17 // CHECK-NEXT: 8 | int a
18 // CHECK-NEXT: | [sizeof=12, align=4
19 // CHECK-NEXT: | nvsize=8, nvalign=4]
20 // CHECK-X64: *** Dumping AST Record Layout
21 // CHECK-X64: *** Dumping AST Record Layout
22 // CHECK-X64-NEXT: 0 | struct A
23 // CHECK-X64-NEXT: 0 | (A vbtable pointer)
24 // CHECK-X64-NEXT: 8:0-0 | char a
25 // CHECK-X64-NEXT: 16 | struct B0 (virtual base)
26 // CHECK-X64-NEXT: 16 | int a
27 // CHECK-X64-NEXT: | [sizeof=24, align=8
28 // CHECK-X64-NEXT: | nvsize=16, nvalign=8]
30 struct B : virtual B0 { short a : 1; };
32 // CHECK: *** Dumping AST Record Layout
33 // CHECK-NEXT: 0 | struct B
34 // CHECK-NEXT: 0 | (B vbtable pointer)
35 // CHECK-NEXT: 4:0-0 | short a
36 // CHECK-NEXT: 8 | struct B0 (virtual base)
37 // CHECK-NEXT: 8 | int a
38 // CHECK-NEXT: | [sizeof=12, align=4
39 // CHECK-NEXT: | nvsize=8, nvalign=4]
40 // CHECK-X64: *** Dumping AST Record Layout
41 // CHECK-X64-NEXT: 0 | struct B
42 // CHECK-X64-NEXT: 0 | (B vbtable pointer)
43 // CHECK-X64-NEXT: 8:0-0 | short a
44 // CHECK-X64-NEXT: 16 | struct B0 (virtual base)
45 // CHECK-X64-NEXT: 16 | int a
46 // CHECK-X64-NEXT: | [sizeof=24, align=8
47 // CHECK-X64-NEXT: | nvsize=16, nvalign=8]
49 struct C : virtual B0 { char a : 1; char : 0; };
51 // CHECK: *** Dumping AST Record Layout
52 // CHECK-NEXT: 0 | struct C
53 // CHECK-NEXT: 0 | (C vbtable pointer)
54 // CHECK-NEXT: 4:0-0 | char a
55 // CHECK-NEXT: 5:- | char
56 // CHECK-NEXT: 8 | struct B0 (virtual base)
57 // CHECK-NEXT: 8 | int a
58 // CHECK-NEXT: | [sizeof=12, align=4
59 // CHECK-NEXT: | nvsize=8, nvalign=4]
60 // CHECK-X64: *** Dumping AST Record Layout
61 // CHECK-X64-NEXT: 0 | struct C
62 // CHECK-X64-NEXT: 0 | (C vbtable pointer)
63 // CHECK-X64-NEXT: 8:0-0 | char a
64 // CHECK-X64-NEXT: 9:- | char
65 // CHECK-X64-NEXT: 16 | struct B0 (virtual base)
66 // CHECK-X64-NEXT: 16 | int a
67 // CHECK-X64-NEXT: | [sizeof=24, align=8
68 // CHECK-X64-NEXT: | nvsize=16, nvalign=8]
70 struct D : virtual B0 { char a : 1; char b; };
72 // CHECK: *** Dumping AST Record Layout
73 // CHECK-NEXT: 0 | struct D
74 // CHECK-NEXT: 0 | (D vbtable pointer)
75 // CHECK-NEXT: 4:0-0 | char a
76 // CHECK-NEXT: 5 | char b
77 // CHECK-NEXT: 8 | struct B0 (virtual base)
78 // CHECK-NEXT: 8 | int a
79 // CHECK-NEXT: | [sizeof=12, align=4
80 // CHECK-NEXT: | nvsize=8, nvalign=4]
81 // CHECK-X64: *** Dumping AST Record Layout
82 // CHECK-X64-NEXT: 0 | struct D
83 // CHECK-X64-NEXT: 0 | (D vbtable pointer)
84 // CHECK-X64-NEXT: 8:0-0 | char a
85 // CHECK-X64-NEXT: 9 | char b
86 // CHECK-X64-NEXT: 16 | struct B0 (virtual base)
87 // CHECK-X64-NEXT: 16 | int a
88 // CHECK-X64-NEXT: | [sizeof=24, align=8
89 // CHECK-X64-NEXT: | nvsize=16, nvalign=8]
91 struct E : virtual B0, virtual B1 { long long : 1; };
92 // CHECK: *** Dumping AST Record Layout
93 // CHECK: *** Dumping AST Record Layout
94 // CHECK-NEXT: 0 | struct E
95 // CHECK-NEXT: 0 | (E vbtable pointer)
96 // CHECK-NEXT: 8:0-0 | long long
97 // CHECK-NEXT: 16 | struct B0 (virtual base)
98 // CHECK-NEXT: 16 | int a
99 // CHECK-NEXT: 20 | struct B1 (virtual base)
100 // CHECK-NEXT: 20 | int a
101 // CHECK-NEXT: | [sizeof=24, align=8
102 // CHECK-NEXT: | nvsize=16, nvalign=8]
103 // CHECK-X64: *** Dumping AST Record Layout
104 // CHECK-X64: *** Dumping AST Record Layout
105 // CHECK-X64-NEXT: 0 | struct E
106 // CHECK-X64-NEXT: 0 | (E vbtable pointer)
107 // CHECK-X64-NEXT: 8:0-0 | long long
108 // CHECK-X64-NEXT: 16 | struct B0 (virtual base)
109 // CHECK-X64-NEXT: 16 | int a
110 // CHECK-X64-NEXT: 20 | struct B1 (virtual base)
111 // CHECK-X64-NEXT: 20 | int a
112 // CHECK-X64-NEXT: | [sizeof=24, align=8
113 // CHECK-X64-NEXT: | nvsize=16, nvalign=8]
115 int a[
116 sizeof(A)+
117 sizeof(B)+
118 sizeof(C)+
119 sizeof(D)+
120 sizeof(E)];