summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-02-09 17:27:52 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-02-09 17:27:52 +0000
commit470ee61e01c59ba2991238785dda37d56479ad8a (patch)
tree9125337e943660858a35e2078749703335aef4f2 /clang/lib
parentcca79b8700454ff3c813b6b528613c94ab5c4ad6 (diff)
downloadbcm5719-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.cpp12
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(),
OpenPOWER on IntegriCloud