summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-02-07 22:42:05 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-02-07 22:42:05 +0000
commitbd173badb4743aac228027e5331bdbace5c9e286 (patch)
tree3f8b5c249c58e298c9147d4b408ecb171e72dde0 /clang/lib/CodeGen
parenta8d76d8741ac943fd6dc0eaa07c852520d6fd24a (diff)
downloadbcm5719-llvm-bd173badb4743aac228027e5331bdbace5c9e286.tar.gz
bcm5719-llvm-bd173badb4743aac228027e5331bdbace5c9e286.zip
[MS ABI] Don't emit RTTI descriptors for dllimport vtables
A dllimport'd vtable always points one past the RTTI data, this means that the initializer will never end up referencing the data. Our emission is a harmless waste. llvm-svn: 260062
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/MicrosoftCXXABI.cpp4
1 files changed, 3 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;
OpenPOWER on IntegriCloud