diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2016-01-23 01:20:18 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2016-01-23 01:20:18 +0000 |
commit | 93987df0fdfcee054b3e8c79ed83f7e6db1438fb (patch) | |
tree | 3ec6ff1e14d207b2214e9641d1090eeea3051788 /clang/lib/CodeGen | |
parent | 9ea8033d1bce7e29af3f8faaecca2cf5ebf96698 (diff) | |
download | bcm5719-llvm-93987df0fdfcee054b3e8c79ed83f7e6db1438fb.tar.gz bcm5719-llvm-93987df0fdfcee054b3e8c79ed83f7e6db1438fb.zip |
[cfi] Do not emit bit set entry for available_externally vtables.
In the Itanium ABI, vtable may be emitted speculatively as an
available_externally global. Such vtable may not be present at the
link time and should not have a corresponding CFI bit set entry.
llvm-svn: 258596
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r-- | clang/lib/CodeGen/ItaniumCXXABI.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/ItaniumCXXABI.cpp b/clang/lib/CodeGen/ItaniumCXXABI.cpp index 8b6322a4b75..e2106342922 100644 --- a/clang/lib/CodeGen/ItaniumCXXABI.cpp +++ b/clang/lib/CodeGen/ItaniumCXXABI.cpp @@ -1496,7 +1496,8 @@ void ItaniumCXXABI::emitVTableDefinitions(CodeGenVTables &CGVT, DC->getParent()->isTranslationUnit()) EmitFundamentalRTTIDescriptors(); - CGM.EmitVTableBitSetEntries(VTable, VTLayout); + if (!VTable->isDeclarationForLinker()) + CGM.EmitVTableBitSetEntries(VTable, VTLayout); } bool ItaniumCXXABI::isVirtualOffsetNeededForVTableField( |