r212127 - AST: Small simplification in VTableBuilder
David Majnemer
david.majnemer at gmail.com
Tue Jul 1 14:10:08 PDT 2014
Author: majnemer
Date: Tue Jul 1 16:10:07 2014
New Revision: 212127
URL: http://llvm.org/viewvc/llvm-project?rev=212127&view=rev
Log:
AST: Small simplification in VTableBuilder
Stash whether or not we have an RTTI component away instead of
recomputing it.
Modified:
cfe/trunk/lib/AST/VTableBuilder.cpp
Modified: cfe/trunk/lib/AST/VTableBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/VTableBuilder.cpp?rev=212127&r1=212126&r2=212127&view=diff
==============================================================================
--- cfe/trunk/lib/AST/VTableBuilder.cpp (original)
+++ cfe/trunk/lib/AST/VTableBuilder.cpp Tue Jul 1 16:10:07 2014
@@ -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(BaseSubo
// 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!");
More information about the cfe-commits
mailing list