diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-06-23 20:38:51 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-06-23 20:38:51 +0000 |
commit | 76500d072e97b5256c496304b40deb035ca1e375 (patch) | |
tree | 19d24ec14c2209fbecd0ac12c63c81e1c6f433d3 | |
parent | f3b097523614608537f3cc235585a426a0dd6117 (diff) |
Remove GRStateManager::BindLoc() and GRStateManager::Unbind().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73996 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Analysis/PathSensitive/GRState.h | 16 | ||||
-rw-r--r-- | lib/Analysis/GRExprEngine.cpp | 2 | ||||
-rw-r--r-- | lib/Analysis/GRSimpleVals.cpp | 17 | ||||
-rw-r--r-- | lib/Analysis/GRState.cpp | 12 |
4 files changed, 16 insertions, 31 deletions
diff --git a/include/clang/Analysis/PathSensitive/GRState.h b/include/clang/Analysis/PathSensitive/GRState.h index 1f230dfaf2..7c9c80bea2 100644 --- a/include/clang/Analysis/PathSensitive/GRState.h +++ b/include/clang/Analysis/PathSensitive/GRState.h @@ -593,17 +593,7 @@ public: return UnknownVal(); } - - const GRState* BindLoc(const GRState* St, Loc LV, SVal V) { - return StoreMgr->Bind(St, LV, V); - } - void Unbind(GRState& St, Loc LV) { - St.St = StoreMgr->Remove(St.St, LV); - } - - const GRState* Unbind(const GRState* St, Loc LV); - const GRState* getPersistentState(GRState& Impl); bool isEqual(const GRState* state, Expr* Ex, const llvm::APSInt& V); @@ -722,7 +712,7 @@ inline const GRState *GRState::bindExpr(const Stmt* Ex, SVal V, } inline const GRState *GRState::bindLoc(Loc LV, SVal V) const { - return Mgr->BindLoc(this, LV, V); + return Mgr->StoreMgr->Bind(this, LV, V); } inline const GRState *GRState::bindLoc(SVal LV, SVal V) const { @@ -844,10 +834,6 @@ CB GRState::scanReachableSymbols(SVal val) const { scanReachableSymbols(val, cb); return cb; } - -inline const GRState *GRState::unbindLoc(Loc LV) const { - return Mgr->Unbind(this, LV); -} } // end clang namespace diff --git a/lib/Analysis/GRExprEngine.cpp b/lib/Analysis/GRExprEngine.cpp index c32c424b66..42c6ce3dfb 100644 --- a/lib/Analysis/GRExprEngine.cpp +++ b/lib/Analysis/GRExprEngine.cpp @@ -1046,7 +1046,7 @@ void GRExprEngine::EvalBind(NodeSet& Dst, Expr* Ex, NodeTy* Pred, else { // We are binding to a value other than 'unknown'. Perform the binding // using the StoreManager. - newState = StateMgr.BindLoc(state, cast<Loc>(location), Val); + newState = state->bindLoc(cast<Loc>(location), Val); } // The next thing to do is check if the GRTransferFuncs object wants to diff --git a/lib/Analysis/GRSimpleVals.cpp b/lib/Analysis/GRSimpleVals.cpp index 480612113d..9a1b2fc05e 100644 --- a/lib/Analysis/GRSimpleVals.cpp +++ b/lib/Analysis/GRSimpleVals.cpp @@ -354,24 +354,23 @@ void GRSimpleVals::EvalCall(ExplodedNodeSet<GRState>& Dst, CallExpr* CE, SVal L, ExplodedNode<GRState>* Pred) { - GRStateManager& StateMgr = Eng.getStateManager(); - const GRState* St = Builder.GetState(Pred); + const GRState* state = Builder.GetState(Pred); // Invalidate all arguments passed in by reference (Locs). for (CallExpr::arg_iterator I = CE->arg_begin(), E = CE->arg_end(); I != E; ++I) { - SVal V = St->getSVal(*I); + SVal V = state->getSVal(*I); if (isa<loc::MemRegionVal>(V)) { const MemRegion *R = cast<loc::MemRegionVal>(V).getRegion(); + if (R->isBoundable()) - St = StateMgr.BindLoc(St, cast<Loc>(V), UnknownVal()); + state = state->bindLoc(cast<Loc>(V), UnknownVal()); } else if (isa<nonloc::LocAsInteger>(V)) - St = StateMgr.BindLoc(St, cast<nonloc::LocAsInteger>(V).getLoc(), - UnknownVal()); - + state = state->bindLoc(cast<nonloc::LocAsInteger>(V).getLoc(), + UnknownVal()); } // Make up a symbol for the return value of this function. @@ -381,10 +380,10 @@ void GRSimpleVals::EvalCall(ExplodedNodeSet<GRState>& Dst, if (Loc::IsLocType(T) || (T->isIntegerType() && T->isScalarType())) { unsigned Count = Builder.getCurrentBlockCount(); SVal X = Eng.getValueManager().getConjuredSymbolVal(CE, Count); - St = St->bindExpr(CE, X, Eng.getCFG().isBlkExpr(CE), false); + state = state->bindExpr(CE, X, Eng.getCFG().isBlkExpr(CE), false); } - Builder.MakeNode(Dst, CE, Pred, St); + Builder.MakeNode(Dst, CE, Pred, state); } //===----------------------------------------------------------------------===// diff --git a/lib/Analysis/GRState.cpp b/lib/Analysis/GRState.cpp index a64b2d7f5f..3217c4ac4d 100644 --- a/lib/Analysis/GRState.cpp +++ b/lib/Analysis/GRState.cpp @@ -56,16 +56,16 @@ GRStateManager::RemoveDeadBindings(const GRState* state, Stmt* Loc, SymReaper); } -const GRState* GRStateManager::Unbind(const GRState* St, Loc LV) { - Store OldStore = St->getStore(); - Store NewStore = StoreMgr->Remove(OldStore, LV); +const GRState *GRState::unbindLoc(Loc LV) const { + Store OldStore = getStore(); + Store NewStore = Mgr->StoreMgr->Remove(OldStore, LV); if (NewStore == OldStore) - return St; + return this; - GRState NewSt = *St; + GRState NewSt = *this; NewSt.St = NewStore; - return getPersistentState(NewSt); + return Mgr->getPersistentState(NewSt); } const GRState* GRStateManager::getInitialState() { |