xref: /llvm-project/clang/test/CodeGenCXX/override-layout-ms.cpp (revision 879e88693338657aec092db749ddfcb582c65491)
1*879e8869SZequan Wu // RUN: %clang_cc1 -w -triple=x86_64-pc-win32 -fms-compatibility -fdump-record-layouts -foverride-record-layout=%S/Inputs/override-layout-ms.layout %s | FileCheck  %s
2*879e8869SZequan Wu // RUN: %clang_cc1 -w -triple=x86_64-pc-win32 -fms-compatibility -fdump-record-layouts %s | FileCheck  %s
3*879e8869SZequan Wu 
4*879e8869SZequan Wu // CHECK: *** Dumping AST Record Layout
5*879e8869SZequan Wu // CHECK:          0 | struct E1 (empty)
6*879e8869SZequan Wu // CHECK:            | [sizeof=1, align=1,
7*879e8869SZequan Wu // CHECK:            |  nvsize=0, nvalign=1]
8*879e8869SZequan Wu // CHECK: *** Dumping AST Record Layout
9*879e8869SZequan Wu // CHECK:          0 | struct Mid
10*879e8869SZequan Wu // CHECK:          0 |   void * p
11*879e8869SZequan Wu // CHECK:            | [sizeof=8, align=8,
12*879e8869SZequan Wu // CHECK:            |  nvsize=8, nvalign=8]
13*879e8869SZequan Wu // CHECK: *** Dumping AST Record Layout
14*879e8869SZequan Wu // CHECK:          0 | struct E2 (empty)
15*879e8869SZequan Wu // CHECK:            | [sizeof=1, align=1,
16*879e8869SZequan Wu // CHECK:            |  nvsize=0, nvalign=1]
17*879e8869SZequan Wu // CHECK: *** Dumping AST Record Layout
18*879e8869SZequan Wu // CHECK:          0 | struct Combine
19*879e8869SZequan Wu // CHECK:          0 |   struct E1 (base) (empty)
20*879e8869SZequan Wu // CHECK:          0 |   struct Mid (base)
21*879e8869SZequan Wu // CHECK:          0 |     void * p
22*879e8869SZequan Wu // CHECK:          0 |   struct E2 (base) (empty)
23*879e8869SZequan Wu // CHECK:            | [sizeof=8, align=8,
24*879e8869SZequan Wu // CHECK:            |  nvsize=8, nvalign=8]
25*879e8869SZequan Wu // CHECK: *** Dumping AST Record Layout
26*879e8869SZequan Wu // CHECK:          0 | struct Combine2
27*879e8869SZequan Wu // CHECK:          0 |   struct VB1 (primary base)
28*879e8869SZequan Wu // CHECK:          0 |     (VB1 vftable pointer)
29*879e8869SZequan Wu // CHECK:          8 |   struct VB2 (base)
30*879e8869SZequan Wu // CHECK:          8 |     (VB2 vftable pointer)
31*879e8869SZequan Wu // CHECK:            | [sizeof=16, align=8,
32*879e8869SZequan Wu // CHECK:            |  nvsize=16, nvalign=8]
33*879e8869SZequan Wu 
34*879e8869SZequan Wu 
35*879e8869SZequan Wu struct E1 {};
36*879e8869SZequan Wu struct E2 {};
37*879e8869SZequan Wu struct Mid {void *p; };
38*879e8869SZequan Wu struct __declspec(empty_bases) Combine : E1, Mid, E2 {};
fooVB139*879e8869SZequan Wu struct VB1 { virtual void foo() {}};
barVB240*879e8869SZequan Wu struct VB2 { virtual void bar() {}};
41*879e8869SZequan Wu struct Combine2: VB1, VB2 {};
42*879e8869SZequan Wu Combine g;
43*879e8869SZequan Wu Combine2 f;