summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/CodeGen/MicrosoftCXXABI.cpp4
-rw-r--r--clang/test/CodeGenCXX/microsoft-abi-vftables.cpp2
2 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp
index 71fc207e595..4cd4f8533b7 100644
--- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp
+++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp
@@ -1567,7 +1567,9 @@ void MicrosoftCXXABI::emitVTableDefinitions(CodeGenVTables &CGVT,
if (VTable->hasInitializer())
continue;
- llvm::Constant *RTTI = getContext().getLangOpts().RTTIData
+ llvm::Constant *RTTI = getContext().getLangOpts().RTTIData &&
+ VTable->getDLLStorageClass() !=
+ llvm::GlobalValue::DLLImportStorageClass
? getMSCompleteObjectLocator(RD, Info)
: nullptr;
diff --git a/clang/test/CodeGenCXX/microsoft-abi-vftables.cpp b/clang/test/CodeGenCXX/microsoft-abi-vftables.cpp
index 340675b188d..f32bff09a8a 100644
--- a/clang/test/CodeGenCXX/microsoft-abi-vftables.cpp
+++ b/clang/test/CodeGenCXX/microsoft-abi-vftables.cpp
@@ -4,6 +4,8 @@
// RTTI-DAG: $"\01??_7S@@6B@" = comdat largest
// RTTI-DAG: $"\01??_7V@@6B@" = comdat largest
+// RTTI-NOT: @"\01??_R4U@@6B@"
+
struct S {
virtual ~S();
} s;
OpenPOWER on IntegriCloud