Author: majnemer Date: Tue Feb 9 11:27:52 2016 New Revision: 260238 URL: http://llvm.org/viewvc/llvm-project?rev=260238&view=rev Log: [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. Modified: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp Modified: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp?rev=260238&r1=260237&r2=260238&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp (original) +++ cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp Tue Feb 9 11:27:52 2016 @@ -1567,14 +1567,14 @@ void MicrosoftCXXABI::emitVTableDefiniti 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(), _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits