diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-07-01 21:10:07 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-07-01 21:10:07 +0000 |
commit | 3c7228e4684b88651412273661db32d6cc554ebe (patch) | |
tree | 1c18471a2ccea5254427ebe733990667c9d351e7 /clang/lib/AST/VTableBuilder.cpp | |
parent | f618339a37fbfc2a1edeb1f934fe41b73ebb65e3 (diff) | |
download | bcm5719-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.cpp | 12 |
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!"); |