aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-06-23 20:38:51 +0000
committerTed Kremenek <kremenek@apple.com>2009-06-23 20:38:51 +0000
commit76500d072e97b5256c496304b40deb035ca1e375 (patch)
tree19d24ec14c2209fbecd0ac12c63c81e1c6f433d3
parentf3b097523614608537f3cc235585a426a0dd6117 (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.h16
-rw-r--r--lib/Analysis/GRExprEngine.cpp2
-rw-r--r--lib/Analysis/GRSimpleVals.cpp17
-rw-r--r--lib/Analysis/GRState.cpp12
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() {