diff options
| author | Erich Keane <erich.keane@intel.com> | 2017-12-21 02:07:46 +0000 |
|---|---|---|
| committer | Erich Keane <erich.keane@intel.com> | 2017-12-21 02:07:46 +0000 |
| commit | abf9d6648c882224ddda6f3c4ccaa53d8dcb3f9d (patch) | |
| tree | 65554d78538a5d1bfeedd248b67d7753388523e4 /clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp | |
| parent | 604032729c07200fc4ccb180b0ccef64420bfb5f (diff) | |
| download | bcm5719-llvm-abf9d6648c882224ddda6f3c4ccaa53d8dcb3f9d.tar.gz bcm5719-llvm-abf9d6648c882224ddda6f3c4ccaa53d8dcb3f9d.zip | |
Fix for PR32990
This fixes the bug in https://bugs.llvm.org/show_bug.cgi?id=32990.
Patch By: zahiraam
Differential Revision: https://reviews.llvm.org/D39063
llvm-svn: 321239
Diffstat (limited to 'clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp')
| -rw-r--r-- | clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp b/clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp index b381fff450d..aabe850c2e5 100644 --- a/clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp +++ b/clang/test/CodeGenCXX/dllimport-dtor-thunks.cpp @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -mconstructor-aliases %s -triple x86_64-windows-msvc -fms-extensions -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 -mconstructor-aliases %s -triple x86_64-windows-msvc -fms-extensions -emit-llvm -O1 -disable-llvm-passes -o - | FileCheck --check-prefix=MO1 %s // FIXME: We should really consider removing -mconstructor-aliases for MS C++ // ABI. The risk of bugs introducing ABI incompatibility under @@ -23,9 +24,7 @@ struct __declspec(dllimport) ImportOverrideVDtor : public BaseClass { virtual ~ImportOverrideVDtor() {} }; -// Virtually inherits from a non-dllimport base class. This time we need to call -// the complete destructor and emit it inline. It's not exported from the DLL, -// and it must be emitted. +// Virtually inherits from a non-dllimport base class. Emit the vbase destructor. struct __declspec(dllimport) ImportVBaseOverrideVDtor : public virtual BaseClass { virtual ~ImportVBaseOverrideVDtor() {} @@ -41,9 +40,11 @@ extern "C" void testit() { // needs the complete destructor (_D). // CHECK-LABEL: define void @testit() // CHECK: call void @"\01??_DImportVBaseOverrideVDtor@@QEAAXXZ"(%struct.ImportVBaseOverrideVDtor* %{{.*}}) -// CHECK: call void @"\01??1ImportOverrideVDtor@@UEAA@XZ"(%struct.ImportOverrideVDtor* %{{.*}}) -// CHECK: call void @"\01??1ImportIntroVDtor@@UEAA@XZ"(%struct.ImportIntroVDtor* %{{.*}}) +// CHECK: call void @"\01??_DImportOverrideVDtor@@QEAAXXZ"(%struct.ImportOverrideVDtor* %{{.*}}) +// CHECK: call void @"\01??_DImportIntroVDtor@@QEAAXXZ"(%struct.ImportIntroVDtor* %{{.*}}) -// CHECK-LABEL: define linkonce_odr void @"\01??_DImportVBaseOverrideVDtor@@QEAAXXZ" -// CHECK-LABEL: declare dllimport void @"\01??1ImportOverrideVDtor@@UEAA@XZ" -// CHECK-LABEL: declare dllimport void @"\01??1ImportIntroVDtor@@UEAA@XZ" +// CHECK-LABEL: declare dllimport void @"\01??_DImportVBaseOverrideVDtor@@QEAAXXZ"(%struct.ImportVBaseOverrideVDtor*) +// CHECK-LABEL: declare dllimport void @"\01??_DImportOverrideVDtor@@QEAAXXZ"(%struct.ImportOverrideVDtor*) +// CHECK-LABEL: declare dllimport void @"\01??_DImportIntroVDtor@@QEAAXXZ"(%struct.ImportIntroVDtor*) + +// MO1-DAG: define available_externally dllimport void @"\01??_DImportIntroVDtor@@QEAAXXZ" |

