1 // RUN: %clang_cc1 -fno-rtti -triple i686-pc-win32 -fdump-record-layouts -fms-extensions -fsyntax-only %s 2>&1 | FileCheck %s
3 struct __single_inheritance S
;
4 struct __multiple_inheritance M
;
5 struct __virtual_inheritance V
;
8 struct SD
{ char a
; int S::*mp
; };
9 struct MD
{ char a
; int M::*mp
; };
10 struct VD
{ char a
; int V::*mp
; };
11 struct UD
{ char a
; int U::*mp
; };
12 struct SF
{ char a
; int (S::*mp
)(); };
13 struct MF
{ char a
; int (M::*mp
)(); };
14 struct VF
{ char a
; int (V::*mp
)(); };
15 struct UF
{ char a
; int (U::*mp
)(); };
17 // CHECK: *** Dumping AST Record Layout
18 // CHECK-NEXT: 0 | struct SD
19 // CHECK-NEXT: 0 | char a
20 // CHECK-NEXT: 4 | int struct S::* mp
21 // CHECK-NEXT: | [sizeof=8, align=4
22 // CHECK-NEXT: | nvsize=8, nvalign=4]
24 // CHECK: *** Dumping AST Record Layout
25 // CHECK-NEXT: 0 | struct MD
26 // CHECK-NEXT: 0 | char a
27 // CHECK-NEXT: 4 | int struct M::* mp
28 // CHECK-NEXT: | [sizeof=8, align=4
29 // CHECK-NEXT: | nvsize=8, nvalign=4]
31 // CHECK: *** Dumping AST Record Layout
32 // CHECK-NEXT: 0 | struct VD
33 // CHECK-NEXT: 0 | char a
34 // CHECK-NEXT: 8 | int struct V::* mp
35 // CHECK-NEXT: | [sizeof=16, align=8
36 // CHECK-NEXT: | nvsize=16, nvalign=8]
38 // CHECK: *** Dumping AST Record Layout
39 // CHECK-NEXT: 0 | struct UD
40 // CHECK-NEXT: 0 | char a
41 // CHECK-NEXT: 8 | int struct U::* mp
42 // CHECK-NEXT: | [sizeof=24, align=8
43 // CHECK-NEXT: | nvsize=24, nvalign=8]
45 // CHECK: *** Dumping AST Record Layout
46 // CHECK-NEXT: 0 | struct SF
47 // CHECK-NEXT: 0 | char a
48 // CHECK-NEXT: 4 | int (struct S::*)(void) __attribute__((thiscall)) mp
49 // CHECK-NEXT: | [sizeof=8, align=4
50 // CHECK-NEXT: | nvsize=8, nvalign=4]
52 // CHECK: *** Dumping AST Record Layout
53 // CHECK-NEXT: 0 | struct MF
54 // CHECK-NEXT: 0 | char a
55 // CHECK-NEXT: 8 | int (struct M::*)(void) __attribute__((thiscall)) mp
56 // CHECK-NEXT: | [sizeof=16, align=8
57 // CHECK-NEXT: | nvsize=16, nvalign=8]
59 // CHECK: *** Dumping AST Record Layout
60 // CHECK-NEXT: 0 | struct VF
61 // CHECK-NEXT: 0 | char a
62 // CHECK-NEXT: 8 | int (struct V::*)(void) __attribute__((thiscall)) mp
63 // CHECK-NEXT: | [sizeof=24, align=8
64 // CHECK-NEXT: | nvsize=24, nvalign=8]
66 // CHECK: *** Dumping AST Record Layout
67 // CHECK-NEXT: 0 | struct UF
68 // CHECK-NEXT: 0 | char a
69 // CHECK-NEXT: 8 | int (struct U::*)(void) __attribute__((thiscall)) mp
70 // CHECK-NEXT: | [sizeof=24, align=8
71 // CHECK-NEXT: | nvsize=24, nvalign=8]