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