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
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]
37 struct Mid
{void *p
; };
38 struct __declspec(empty_bases
) Combine
: E1
, Mid
, E2
{};
39 struct VB1
{ virtual void foo() {}};
40 struct VB2
{ virtual void bar() {}};
41 struct Combine2
: VB1
, VB2
{};