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