[cfe-commits] r96060 - /cfe/trunk/lib/Checker/RegionStore.cpp

Ted Kremenek kremenek at apple.com
Fri Feb 12 16:54:03 PST 2010


Author: kremenek
Date: Fri Feb 12 18:54:03 2010
New Revision: 96060

URL: http://llvm.org/viewvc/llvm-project?rev=96060&view=rev
Log:
Pull logic for visiting value bindings in InvalidateRegionsWorker into a separate method.
No functionality change.

Modified:
    cfe/trunk/lib/Checker/RegionStore.cpp

Modified: cfe/trunk/lib/Checker/RegionStore.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/RegionStore.cpp?rev=96060&r1=96059&r2=96060&view=diff

==============================================================================
--- cfe/trunk/lib/Checker/RegionStore.cpp (original)
+++ cfe/trunk/lib/Checker/RegionStore.cpp Fri Feb 12 18:54:03 2010
@@ -473,19 +473,27 @@
 
   BumpVectorContext BVC;
   ClusterMap ClusterM;
-  WorkList WL;  
+  WorkList WL;
+  
+  StoreManager::InvalidatedSymbols *IS;
+  ASTContext &Ctx;
+  ValueManager &ValMgr;
+  
 public:
+  InvalidateRegionsWorker(StoreManager::InvalidatedSymbols *is,
+                          ASTContext &ctx, ValueManager &valMgr)
+    : IS(is), Ctx(ctx), ValMgr(valMgr) {}
+  
   Store InvalidateRegions(RegionStoreManager &RM, Store store,
                           const MemRegion * const *I,const MemRegion * const *E,
-                          const Expr *Ex, unsigned Count,
-                          StoreManager::InvalidatedSymbols *IS,
-                          ASTContext &Ctx, ValueManager &ValMgr);
+                          const Expr *Ex, unsigned Count);
   
 private:
   void AddToWorkList(BindingKey K);
   void AddToWorkList(const MemRegion *R);
   void AddToCluster(BindingKey K);
   RegionCluster **getCluster(const MemRegion *R);
+  void VisitBinding(SVal V);
 };  
 }
 
@@ -520,14 +528,22 @@
   return &CRef;
 }
 
+void InvalidateRegionsWorker::VisitBinding(SVal V) {
+  if (const MemRegion *R = V.getAsRegion())
+    AddToWorkList(R);
+  
+  // A symbol?  Mark it touched by the invalidation.
+  if (IS)
+    if (SymbolRef Sym = V.getAsSymbol())
+      IS->insert(Sym);
+}
+  
 Store InvalidateRegionsWorker::InvalidateRegions(RegionStoreManager &RM,
                                                  Store store,
                                                  const MemRegion * const *I,
                                                  const MemRegion * const *E,
-                                                 const Expr *Ex, unsigned Count,
-                                           StoreManager::InvalidatedSymbols *IS,
-                                                 ASTContext &Ctx,
-                                                 ValueManager &ValMgr) {
+                                                 const Expr *Ex, unsigned Count)
+{
   RegionBindings B = RegionStoreManager::GetRegionBindings(store);
 
   // Scan the entire store and make the region clusters.
@@ -554,15 +570,8 @@
       BindingKey K = *I;
       
       // Get the old binding.  Is it a region?  If so, add it to the worklist.
-      if (const SVal *V = RM.Lookup(B, K)) {
-        if (const MemRegion *R = V->getAsRegion())
-          AddToWorkList(R);
-    
-        // A symbol?  Mark it touched by the invalidation.
-        if (IS)
-          if (SymbolRef Sym = V->getAsSymbol())
-            IS->insert(Sym);
-      }
+      if (const SVal *V = RM.Lookup(B, K))
+        VisitBinding(*V);
 
       B = RM.Remove(B, K);
     }
@@ -643,9 +652,8 @@
                                             const MemRegion * const *E,
                                             const Expr *Ex, unsigned Count,
                                             InvalidatedSymbols *IS) {
-  InvalidateRegionsWorker W;
-  return W.InvalidateRegions(*this, store, I, E, Ex, Count, IS, getContext(),
-                             StateMgr.getValueManager());
+  InvalidateRegionsWorker W(IS, getContext(), StateMgr.getValueManager());
+  return W.InvalidateRegions(*this, store, I, E, Ex, Count);
 }
   
 //===----------------------------------------------------------------------===//





More information about the cfe-commits mailing list