summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/VTableBuilder.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-07-01 21:10:07 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-07-01 21:10:07 +0000
commit3c7228e4684b88651412273661db32d6cc554ebe (patch)
tree1c18471a2ccea5254427ebe733990667c9d351e7 /clang/lib/AST/VTableBuilder.cpp
parentf618339a37fbfc2a1edeb1f934fe41b73ebb65e3 (diff)
downloadbcm5719-llvm-3c7228e4684b88651412273661db32d6cc554ebe.tar.gz
bcm5719-llvm-3c7228e4684b88651412273661db32d6cc554ebe.zip
AST: Small simplification in VTableBuilder
Stash whether or not we have an RTTI component away instead of recomputing it. llvm-svn: 212127
Diffstat (limited to 'clang/lib/AST/VTableBuilder.cpp')
-rw-r--r--clang/lib/AST/VTableBuilder.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/clang/lib/AST/VTableBuilder.cpp b/clang/lib/AST/VTableBuilder.cpp
index 49e13559d7f..edc82f8887e 100644
--- a/clang/lib/AST/VTableBuilder.cpp
+++ b/clang/lib/AST/VTableBuilder.cpp
@@ -2446,6 +2446,9 @@ private:
MethodVFTableLocationsTy MethodVFTableLocations;
+ /// \brief Does this class have an RTTI component?
+ bool HasRTTIComponent;
+
/// MethodInfo - Contains information about a method in a vtable.
/// (Used for computing 'this' pointer adjustment thunks.
struct MethodInfo {
@@ -2576,8 +2579,9 @@ public:
Overriders(MostDerivedClass, CharUnits(), MostDerivedClass) {
// Only include the RTTI component if we know that we will provide a
// definition of the vftable.
- if (Context.getLangOpts().RTTI &&
- !MostDerivedClass->hasAttr<DLLImportAttr>())
+ HasRTTIComponent = Context.getLangOpts().RTTI &&
+ !MostDerivedClass->hasAttr<DLLImportAttr>();
+ if (HasRTTIComponent)
Components.push_back(VTableComponent::MakeRTTI(MostDerivedClass));
LayoutVFTable();
@@ -2921,8 +2925,8 @@ void VFTableBuilder::AddMethods(BaseSubobject Base, unsigned BaseDepth,
// it requires return adjustment. Insert the method info for this method.
unsigned VBIndex =
LastVBase ? VTables.getVBTableIndex(MostDerivedClass, LastVBase) : 0;
- MethodInfo MI(VBIndex, Context.getLangOpts().RTTI ? Components.size() - 1
- : Components.size());
+ MethodInfo MI(VBIndex,
+ HasRTTIComponent ? Components.size() - 1 : Components.size());
assert(!MethodInfoMap.count(MD) &&
"Should not have method info for this method yet!");
OpenPOWER on IntegriCloud