From dbe65180fb1f2c560db6f44202c3c3251b1cce4f Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Tue, 9 Feb 2016 17:27:52 +0000 Subject: [PATCH] [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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@260238 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/MicrosoftCXXABI.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/CodeGen/MicrosoftCXXABI.cpp b/lib/CodeGen/MicrosoftCXXABI.cpp index 4cd4f8533b..0664381b44 100644 --- a/lib/CodeGen/MicrosoftCXXABI.cpp +++ b/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(), -- 2.40.0