diff options
Diffstat (limited to 'test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp')
-rw-r--r-- | test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp b/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp index 65d6a9d90e6d..83f8114bae99 100644 --- a/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp +++ b/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp @@ -807,3 +807,41 @@ C::C() {} // MANGLING-DAG: @"\01??_7C@pr21031_2@@6BA@1@@" = {{.*}} constant [1 x i8*] // MANGLING-DAG: @"\01??_7C@pr21031_2@@6BB@1@@" = {{.*}} constant [1 x i8*] } + +namespace pr21062_1 { +struct A { virtual void f(); }; +struct B {}; +struct C : virtual B {}; +struct D : virtual C, virtual B, virtual A { D();}; +D::D() {} + +// CHECK-LABEL: VFTable for 'pr21062_1::A' in 'pr21062_1::D' (1 entry) +// CHECK-NEXT: 0 | void pr21062_1::A::f() + +// MANGLING-DAG: @"\01??_7D@pr21062_1@@6B@" = {{.*}} constant [1 x i8*] +} + +namespace pr21062_2 { +struct A { virtual void f(); }; +struct B {}; +struct C : virtual B {}; +struct D : C, virtual B, virtual A { D(); }; +D::D() {} + +// CHECK-LABEL: VFTable for 'pr21062_2::A' in 'pr21062_2::D' (1 entry) +// CHECK-NEXT: 0 | void pr21062_2::A::f() + +// MANGLING-DAG: @"\01??_7D@pr21062_2@@6B@" = {{.*}} constant [1 x i8*] +} + +namespace pr21064 { +struct A {}; +struct B { virtual void f(); }; +struct C : virtual A, virtual B {}; +struct D : virtual A, virtual C { D(); }; +D::D() {} +// CHECK-LABEL: VFTable for 'pr21064::B' in 'pr21064::C' in 'pr21064::D' (1 entry) +// CHECK-NEXT: 0 | void pr21064::B::f() + +// MANGLING-DAG: @"\01??_7D@pr21064@@6B@" = {{.*}} constant [1 x i8*] +} |