From 72119c478ffb35354bb168890c77e6ab5271ba06 Mon Sep 17 00:00:00 2001 From: Zhongxing Xu Date: Fri, 5 Feb 2010 05:34:29 +0000 Subject: [PATCH] More GRState* -> Store changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95365 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Checker/PathSensitive/Store.h | 4 ++-- lib/Checker/BasicStore.cpp | 13 +++++-------- lib/Checker/FlatStore.cpp | 12 ++++-------- lib/Checker/GRState.cpp | 3 ++- lib/Checker/RegionStore.cpp | 10 ++++------ 5 files changed, 17 insertions(+), 25 deletions(-) diff --git a/include/clang/Checker/PathSensitive/Store.h b/include/clang/Checker/PathSensitive/Store.h index 64650e58b3..3121e461bc 100644 --- a/include/clang/Checker/PathSensitive/Store.h +++ b/include/clang/Checker/PathSensitive/Store.h @@ -132,8 +132,8 @@ public: return UnknownVal(); } - virtual void RemoveDeadBindings(GRState &state, Stmt* Loc, - SymbolReaper& SymReaper, + virtual Store RemoveDeadBindings(Store store, Stmt* Loc, + SymbolReaper& SymReaper, llvm::SmallVectorImpl& RegionRoots) = 0; virtual Store BindDecl(Store store, const VarRegion *VR, SVal initVal) = 0; diff --git a/lib/Checker/BasicStore.cpp b/lib/Checker/BasicStore.cpp index 2c83ed9687..e2c96759a4 100644 --- a/lib/Checker/BasicStore.cpp +++ b/lib/Checker/BasicStore.cpp @@ -82,7 +82,7 @@ public: /// RemoveDeadBindings - Scans a BasicStore of 'state' for dead values. /// It updatees the GRState object in place with the values removed. - void RemoveDeadBindings(GRState &state, Stmt* Loc, SymbolReaper& SymReaper, + Store RemoveDeadBindings(Store store, Stmt* Loc, SymbolReaper& SymReaper, llvm::SmallVectorImpl& RegionRoots); void iterBindings(Store store, BindingsHandler& f); @@ -343,12 +343,10 @@ Store BasicStoreManager::Remove(Store store, Loc loc) { } } -void -BasicStoreManager::RemoveDeadBindings(GRState &state, Stmt* Loc, - SymbolReaper& SymReaper, +Store BasicStoreManager::RemoveDeadBindings(Store store, Stmt* Loc, + SymbolReaper& SymReaper, llvm::SmallVectorImpl& RegionRoots) { - Store store = state.getStore(); BindingsTy B = GetBindings(store); typedef SVal::symbol_iterator symbol_iterator; @@ -389,7 +387,7 @@ BasicStoreManager::RemoveDeadBindings(GRState &state, Stmt* Loc, break; Marked.insert(MR); - SVal X = Retrieve(state.getStore(), loc::MemRegionVal(MR)); + SVal X = Retrieve(store, loc::MemRegionVal(MR)); // FIXME: We need to handle symbols nested in region definitions. for (symbol_iterator SI=X.symbol_begin(),SE=X.symbol_end();SI!=SE;++SI) @@ -422,8 +420,7 @@ BasicStoreManager::RemoveDeadBindings(GRState &state, Stmt* Loc, } } - // Write the store back. - state.setStore(store); + return store; } Store BasicStoreManager::scanForIvars(Stmt *B, const Decl* SelfDecl, diff --git a/lib/Checker/FlatStore.cpp b/lib/Checker/FlatStore.cpp index c4f37dff65..4622f47877 100644 --- a/lib/Checker/FlatStore.cpp +++ b/lib/Checker/FlatStore.cpp @@ -48,9 +48,10 @@ public: SVal getLValueField(const FieldDecl* D, SVal Base); SVal getLValueElement(QualType elementType, SVal offset, SVal Base); SVal ArrayToPointer(Loc Array); - void RemoveDeadBindings(GRState &state, Stmt* Loc, - SymbolReaper& SymReaper, - llvm::SmallVectorImpl& RegionRoots); + Store RemoveDeadBindings(Store store, Stmt* Loc, SymbolReaper& SymReaper, + llvm::SmallVectorImpl& RegionRoots){ + return store; + } Store BindDecl(Store store, const VarRegion *VR, SVal initVal); @@ -116,11 +117,6 @@ SVal FlatStoreManager::ArrayToPointer(Loc Array) { return Array; } -void FlatStoreManager::RemoveDeadBindings(GRState &state, Stmt* Loc, - SymbolReaper& SymReaper, - llvm::SmallVectorImpl& RegionRoots) { -} - Store FlatStoreManager::BindDecl(Store store, const VarRegion *VR, SVal initVal) { return store; diff --git a/lib/Checker/GRState.cpp b/lib/Checker/GRState.cpp index 3abc6d2901..592f930316 100644 --- a/lib/Checker/GRState.cpp +++ b/lib/Checker/GRState.cpp @@ -50,7 +50,8 @@ GRStateManager::RemoveDeadBindings(const GRState* state, Stmt* Loc, state, RegionRoots); // Clean up the store. - StoreMgr->RemoveDeadBindings(NewState, Loc, SymReaper, RegionRoots); + NewState.St = StoreMgr->RemoveDeadBindings(NewState.St, Loc, SymReaper, + RegionRoots); return ConstraintMgr->RemoveDeadBindings(getPersistentState(NewState), SymReaper); diff --git a/lib/Checker/RegionStore.cpp b/lib/Checker/RegionStore.cpp index 348450e233..528419f0a8 100644 --- a/lib/Checker/RegionStore.cpp +++ b/lib/Checker/RegionStore.cpp @@ -389,7 +389,7 @@ public: // Part of public interface to class. /// RemoveDeadBindings - Scans the RegionStore of 'state' for dead values. /// It returns a new Store with these values removed. - void RemoveDeadBindings(GRState &state, Stmt* Loc, SymbolReaper& SymReaper, + Store RemoveDeadBindings(Store store, Stmt* Loc, SymbolReaper& SymReaper, llvm::SmallVectorImpl& RegionRoots); const GRState *EnterStackFrame(const GRState *state, @@ -1789,13 +1789,12 @@ Store RegionStoreManager::Remove(Store store, BindingKey K) { // State pruning. //===----------------------------------------------------------------------===// -void RegionStoreManager::RemoveDeadBindings(GRState &state, Stmt* Loc, - SymbolReaper& SymReaper, +Store RegionStoreManager::RemoveDeadBindings(Store store, Stmt* Loc, + SymbolReaper& SymReaper, llvm::SmallVectorImpl& RegionRoots) { typedef std::pair RBDNode; - Store store = state.getStore(); RegionBindings B = GetRegionBindings(store); // The backmap from regions to subregions. @@ -1985,8 +1984,7 @@ tryAgain: SymReaper.maybeDead(*SI); } - // Write the store back. - state.setStore(new_store); + return new_store; } GRState const *RegionStoreManager::EnterStackFrame(GRState const *state, -- 2.40.0