summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2018-03-16 19:40:50 +0000
committerReid Kleckner <rnk@google.com>2018-03-16 19:40:50 +0000
commitae9b07011140037c364e5efa2bb3ff422163d5b5 (patch)
tree3388ccca7a0b75251bffb10bdd35ed71bdac9575 /clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp
parent5ba2fe3720c51c1ea5740c32c525d48a64105626 (diff)
downloadbcm5719-llvm-ae9b07011140037c364e5efa2bb3ff422163d5b5.tar.gz
bcm5719-llvm-ae9b07011140037c364e5efa2bb3ff422163d5b5.zip
[MS] Always use base dtors in place of complete/vbase dtors when possible
Summary: Previously we tried too hard to uphold the fiction that destructor variants work like they do on Itanium throughout the ABI-neutral parts of clang. This lead to MS C++ ABI incompatiblities and other bugs. Now, -mconstructor-aliases will no longer control this ABI detail, and clang -cc1's LLVM IR output will be this much closer to the clang driver's. Based on a patch by Zahira Ammarguellat: https://reviews.llvm.org/D39063 I've tried to move the logic that Zahira added into MicrosoftCXXABI.cpp. There is only one ABI-specific detail sticking out, and that is in CodeGenModule::getAddrOfCXXStructor, where we collapse complete dtors to base dtors in the MS ABI. This fixes PR32990. Reviewers: erichkeane, zahiraam, majnemer, rjmccall Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D44505 llvm-svn: 327732
Diffstat (limited to 'clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp')
-rw-r--r--clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp6
1 files changed, 1 insertions, 5 deletions
diff --git a/clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp b/clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp
index a1ff34c02a3..99dd4058dd3 100644
--- a/clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp
+++ b/clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp
@@ -1,9 +1,5 @@
// RUN: %clang_cc1 -mconstructor-aliases %s -triple x86_64-windows-msvc -fms-extensions -emit-llvm -o - | FileCheck %s
-// FIXME: We should really consider removing -mconstructor-aliases for MS C++
-// ABI. The risk of bugs introducing ABI incompatibility under
-// -mno-constructor-aliases is too high.
-
// PR32990
// Introduces the virtual destructor. We should use the base destructor
@@ -44,6 +40,6 @@ extern "C" void testit() {
// CHECK: call void @"\01??1ImportOverrideVDtor@@UEAA@XZ"(%struct.ImportOverrideVDtor* %{{.*}})
// CHECK: call void @"\01??1ImportIntroVDtor@@UEAA@XZ"(%struct.ImportIntroVDtor* %{{.*}})
-// CHECK-LABEL: define linkonce_odr dso_local void @"\01??_DImportVBaseOverrideVDtor@@QEAAXXZ"
+// CHECK-LABEL: declare dllimport void @"\01??_DImportVBaseOverrideVDtor@@QEAAXXZ"
// CHECK-LABEL: declare dllimport void @"\01??1ImportOverrideVDtor@@UEAA@XZ"
// CHECK-LABEL: declare dllimport void @"\01??1ImportIntroVDtor@@UEAA@XZ"
OpenPOWER on IntegriCloud