summaryrefslogtreecommitdiffstats
path: root/clang/test/Layout/ms-x86-empty-virtual-base.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Layout/ms-x86-empty-virtual-base.cpp')
-rw-r--r--clang/test/Layout/ms-x86-empty-virtual-base.cpp37
1 files changed, 36 insertions, 1 deletions
diff --git a/clang/test/Layout/ms-x86-empty-virtual-base.cpp b/clang/test/Layout/ms-x86-empty-virtual-base.cpp
index 819246ee2ae..267f82afef7 100644
--- a/clang/test/Layout/ms-x86-empty-virtual-base.cpp
+++ b/clang/test/Layout/ms-x86-empty-virtual-base.cpp
@@ -730,6 +730,40 @@ struct T3 : virtual T1, virtual T0 { long long a; };
// CHECK-X64-NEXT: | [sizeof=24, align=8
// CHECK-X64-NEXT: | nvsize=16, nvalign=8]
+struct Q0A {};
+struct Q0B { char Q0BField; };
+struct Q0C : virtual Q0A, virtual Q0B { char Q0CField; };
+struct Q0D : Q0C, Q0A {};
+
+// CHECK: *** Dumping AST Record Layout
+// CHECK: *** Dumping AST Record Layout
+// CHECK: *** Dumping AST Record Layout
+// CHECK: *** Dumping AST Record Layout
+// CHECK-NEXT: 0 | struct Q0D
+// CHECK-NEXT: 0 | struct Q0C (base)
+// CHECK-NEXT: 0 | (Q0C vbtable pointer)
+// CHECK-NEXT: 4 | char Q0CField
+// CHECK-NEXT: 8 | struct Q0A (base) (empty)
+// CHECK-NEXT: 8 | struct Q0A (virtual base) (empty)
+// CHECK-NEXT: 8 | struct Q0B (virtual base)
+// CHECK-NEXT: 8 | char Q0BField
+// CHECK-NEXT: | [sizeof=9, align=4
+// CHECK-NEXT: | nvsize=8, nvalign=4]
+// CHECK-X64: *** Dumping AST Record Layout
+// CHECK-X64: *** Dumping AST Record Layout
+// CHECK-X64: *** Dumping AST Record Layout
+// CHECK-X64: *** Dumping AST Record Layout
+// CHECK-X64-NEXT: 0 | struct Q0D
+// CHECK-X64-NEXT: 0 | struct Q0C (base)
+// CHECK-X64-NEXT: 0 | (Q0C vbtable pointer)
+// CHECK-X64-NEXT: 8 | char Q0CField
+// CHECK-X64-NEXT: 16 | struct Q0A (base) (empty)
+// CHECK-X64-NEXT: 16 | struct Q0A (virtual base) (empty)
+// CHECK-X64-NEXT: 16 | struct Q0B (virtual base)
+// CHECK-X64-NEXT: 16 | char Q0BField
+// CHECK-X64-NEXT: | [sizeof=24, align=8
+// CHECK-X64-NEXT: | nvsize=16, nvalign=8]
+
int a[
sizeof(A)+
sizeof(B)+
@@ -753,4 +787,5 @@ sizeof(S)+
sizeof(T)+
sizeof(U)+
sizeof(V)+
-sizeof(T3)];
+sizeof(T3)+
+sizeof(Q0D)];
OpenPOWER on IntegriCloud