StoreManager::Retrieve and StoreManager::RemoveDeadBindings now take a GRState* argument instead of a Store.  This allows them to use the GDM for storing other data.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60570 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/BasicStore.cpp b/lib/Analysis/BasicStore.cpp
index 963254e..c3146cb 100644
--- a/lib/Analysis/BasicStore.cpp
+++ b/lib/Analysis/BasicStore.cpp
@@ -38,7 +38,7 @@
   
   ~BasicStoreManager() {}
 
-  SVal Retrieve(Store St, Loc LV, QualType T);  
+  SVal Retrieve(const GRState *state, Loc LV, QualType T);  
   Store Bind(Store St, Loc LV, SVal V);  
   Store Remove(Store St, Loc LV);
   Store getInitialStore();
@@ -79,10 +79,11 @@
     return SelfRegion;  
   }
     
-  /// RemoveDeadBindings - Scans a BasicStore for dead values.  It returns
-  ///  a new Store with these values removed, and populates LSymbols and
-  ///  DSymbols with the known set of live and dead symbols respectively.
-  Store RemoveDeadBindings(Store store, Stmt* Loc, const LiveVariables& Live,
+  /// RemoveDeadBindings - Scans a BasicStore of 'state' for dead values.
+  ///  It returns a new Store with these values removed, and populates LSymbols
+  ///  and DSymbols with the known set of live and dead symbols respectively.
+  Store RemoveDeadBindings(const GRState* state, Stmt* Loc,
+                           const LiveVariables& Live,
                            llvm::SmallVectorImpl<const MemRegion*>& RegionRoots,
                            LiveSymbolsTy& LSymbols, DeadSymbolsTy& DSymbols);
 
@@ -168,7 +169,7 @@
   return Base;
 }
 
-SVal BasicStoreManager::Retrieve(Store St, Loc LV, QualType T) {
+SVal BasicStoreManager::Retrieve(const GRState* state, Loc LV, QualType T) {
   
   if (isa<UnknownVal>(LV))
     return UnknownVal();
@@ -183,8 +184,9 @@
       
       if (!R)
         return UnknownVal();
-        
-      VarBindingsTy B(static_cast<const VarBindingsTy::TreeTy*>(St));      
+      
+      Store store = state->getStore();
+      VarBindingsTy B(static_cast<const VarBindingsTy::TreeTy*>(store));
       VarBindingsTy::data_type* T = B.lookup(R->getDecl());      
       return T ? *T : UnknownVal();
     }
@@ -247,11 +249,12 @@
 }
 
 Store
-BasicStoreManager::RemoveDeadBindings(Store store, Stmt* Loc,
+BasicStoreManager::RemoveDeadBindings(const GRState* state, Stmt* Loc,
                           const LiveVariables& Liveness,
                           llvm::SmallVectorImpl<const MemRegion*>& RegionRoots,
                           LiveSymbolsTy& LSymbols, DeadSymbolsTy& DSymbols) {
   
+  Store store = state->getStore();
   VarBindingsTy B = GetVarBindings(store);
   typedef SVal::symbol_iterator symbol_iterator;
   
@@ -282,7 +285,7 @@
           break;
         
         Marked.insert(R);
-        SVal X = GetRegionSVal(store, R);      
+        SVal X = GetRegionSVal(state, R);      
     
         // FIXME: We need to handle symbols nested in region definitions.
         for (symbol_iterator SI=X.symbol_begin(), SE=X.symbol_end(); SI!=SE; ++SI)