From 62082b7e0b0b7a299524f6191ddbfd62ed6b17d8 Mon Sep 17 00:00:00 2001 From: Timur Iskhodzhanov Date: Wed, 16 Oct 2013 18:24:06 +0000 Subject: [-cxx-abi microsoft] Fix this argument/parameter offsets for virtual destructors in the presence of virtual bases Reviewed at http://llvm-reviews.chandlerc.com/D1939 llvm-svn: 192822 --- .../microsoft-abi-multiple-nonvirtual-inheritance.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'clang/test/CodeGenCXX/microsoft-abi-multiple-nonvirtual-inheritance.cpp') diff --git a/clang/test/CodeGenCXX/microsoft-abi-multiple-nonvirtual-inheritance.cpp b/clang/test/CodeGenCXX/microsoft-abi-multiple-nonvirtual-inheritance.cpp index 5d73536c2de..dc479f4eff8 100644 --- a/clang/test/CodeGenCXX/microsoft-abi-multiple-nonvirtual-inheritance.cpp +++ b/clang/test/CodeGenCXX/microsoft-abi-multiple-nonvirtual-inheritance.cpp @@ -181,3 +181,21 @@ void emit_ctors() { // CHECK: store [1 x i8*]* @"\01??_7GrandchildOverride@@6BRight@@@", [1 x i8*]** %[[VFPTR]] // CHECK: ret } + +struct LeftWithNonVirtualDtor { + virtual void left(); + ~LeftWithNonVirtualDtor(); +}; + +struct AsymmetricChild : LeftWithNonVirtualDtor, Right { + virtual ~AsymmetricChild(); +}; + +void call_asymmetric_child_complete_dtor() { + // CHECK-LABEL: define void @"\01?call_asymmetric_child_complete_dtor@@YAXXZ" + AsymmetricChild obj; + // CHECK: call x86_thiscallcc %struct.AsymmetricChild* @"\01??0AsymmetricChild@@QAE@XZ"(%struct.AsymmetricChild* %[[OBJ:.*]]) + // CHECK-NOT: getelementptr + // CHECK: call x86_thiscallcc void @"\01??1AsymmetricChild@@UAE@XZ"(%struct.AsymmetricChild* %[[OBJ]]) + // CHECK: ret +} -- cgit v1.2.3