diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2016-02-09 17:27:52 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2016-02-09 17:27:52 +0000 |
| commit | 470ee61e01c59ba2991238785dda37d56479ad8a (patch) | |
| tree | 9125337e943660858a35e2078749703335aef4f2 /clang/lib | |
| parent | cca79b8700454ff3c813b6b528613c94ab5c4ad6 (diff) | |
| download | bcm5719-llvm-470ee61e01c59ba2991238785dda37d56479ad8a.tar.gz bcm5719-llvm-470ee61e01c59ba2991238785dda37d56479ad8a.zip | |
[MS ABI] Cleanup emitVTableDefinitions
Use the VFTable components to determine whether or not we should emit
RTTI data instead of duplicating the VFTableBuilder's logic.
llvm-svn: 260238
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/CodeGen/MicrosoftCXXABI.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp index 4cd4f8533b7..0664381b44f 100644 --- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp +++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp @@ -1567,14 +1567,14 @@ void MicrosoftCXXABI::emitVTableDefinitions(CodeGenVTables &CGVT, if (VTable->hasInitializer()) continue; - llvm::Constant *RTTI = getContext().getLangOpts().RTTIData && - VTable->getDLLStorageClass() != - llvm::GlobalValue::DLLImportStorageClass - ? getMSCompleteObjectLocator(RD, Info) - : nullptr; - const VTableLayout &VTLayout = VFTContext.getVFTableLayout(RD, Info->FullOffsetInMDC); + + llvm::Constant *RTTI = nullptr; + if (any_of(VTLayout.vtable_components(), + [](const VTableComponent &VTC) { return VTC.isRTTIKind(); })) + RTTI = getMSCompleteObjectLocator(RD, Info); + llvm::Constant *Init = CGVT.CreateVTableInitializer( RD, VTLayout.vtable_component_begin(), VTLayout.getNumVTableComponents(), VTLayout.vtable_thunk_begin(), |

