diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-02-07 22:42:05 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-02-07 22:42:05 +0000 |
commit | bd173badb4743aac228027e5331bdbace5c9e286 (patch) | |
tree | 3f8b5c249c58e298c9147d4b408ecb171e72dde0 /clang/lib/CodeGen | |
parent | a8d76d8741ac943fd6dc0eaa07c852520d6fd24a (diff) | |
download | bcm5719-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.cpp | 4 |
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; |