summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-03-25 18:33:27 +0000
committerReid Kleckner <reid@kleckner.net>2014-03-25 18:33:27 +0000
commitdc9f92b80d55b0f411a51f768868d2ce64964501 (patch)
treefb3a6f9db350a7bb3774b834356c0c4464366de4 /test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp
parentd53585be8fab3180a82b9bc7f4c40a5162e08eeb (diff)
MS ABI: Mark direct virtual bases as visted when building vtable paths
Fixes PR19240. In retrospect, this is a fairly obvious bug. :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@204744 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp')
-rw-r--r--test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp b/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp
index 2788965d46..634f583e73 100644
--- a/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp
+++ b/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp
@@ -659,3 +659,26 @@ C c;
// MANGLING-DAG: @"\01??_7C@pr17748@@6BA@1@@"
// MANGLING-DAG: @"\01??_7C@pr17748@@6BB@1@@"
}
+
+namespace pr19240 {
+struct A {
+ virtual void c();
+};
+
+struct B : virtual A {
+ virtual void c();
+};
+
+struct C { };
+
+struct D : virtual A, virtual C, B {};
+
+D obj;
+
+// Each MDC only has one vftable.
+
+// MANGLING-DAG: @"\01??_7D@pr19240@@6B@"
+// MANGLING-DAG: @"\01??_7A@pr19240@@6B@"
+// MANGLING-DAG: @"\01??_7B@pr19240@@6B@"
+
+}