diff options
-rw-r--r-- | include/clang/Analysis/PathSensitive/GRState.h | 34 | ||||
-rw-r--r-- | lib/Analysis/BugReporter.cpp | 2 | ||||
-rw-r--r-- | lib/Analysis/GRState.cpp | 2 |
3 files changed, 12 insertions, 26 deletions
diff --git a/include/clang/Analysis/PathSensitive/GRState.h b/include/clang/Analysis/PathSensitive/GRState.h index 2cb3f9470c..2954bd4733 100644 --- a/include/clang/Analysis/PathSensitive/GRState.h +++ b/include/clang/Analysis/PathSensitive/GRState.h @@ -530,21 +530,6 @@ public: private: - // Methods that query & manipulate the Environment. - SVal GetSVal(const GRState* St, const Stmt* Ex) { - return St->getEnvironment().GetSVal(Ex, ValueMgr); - } - - SVal GetSValAsScalarOrLoc(const GRState* state, const Stmt *S) { - if (const Expr *Ex = dyn_cast<Expr>(S)) { - QualType T = Ex->getType(); - if (Loc::IsLocType(T) || T->isIntegerType()) - return GetSVal(state, S); - } - - return UnknownVal(); - } - SVal GetBlkExprSVal(const GRState* St, const Stmt* Ex) { return St->getEnvironment().GetBlkExprSVal(Ex, ValueMgr); } @@ -599,11 +584,6 @@ public: void iterBindings(const GRState* state, StoreManager::BindingsHandler& F) { StoreMgr->iterBindings(state->getStore(), F); } - - - SVal GetSVal(const GRState* state, Loc LV, QualType T = QualType()) { - return StoreMgr->Retrieve(state, LV, T); - } SVal GetSVal(const GRState* state, const MemRegion* R) { return StoreMgr->Retrieve(state, loc::MemRegionVal(R)); @@ -781,19 +761,25 @@ inline const llvm::APSInt *GRState::getSymVal(SymbolRef sym) const { } inline SVal GRState::getSVal(const Stmt* Ex) const { - return Mgr->GetSVal(this, Ex); + return getEnvironment().GetSVal(Ex, Mgr->ValueMgr); } inline SVal GRState::getBlkExprSVal(const Stmt* Ex) const { return Mgr->GetBlkExprSVal(this, Ex); } -inline SVal GRState::getSValAsScalarOrLoc(const Stmt *Ex) const { - return Mgr->GetSValAsScalarOrLoc(this, Ex); +inline SVal GRState::getSValAsScalarOrLoc(const Stmt *S) const { + if (const Expr *Ex = dyn_cast<Expr>(S)) { + QualType T = Ex->getType(); + if (Loc::IsLocType(T) || T->isIntegerType()) + return getSVal(S); + } + + return UnknownVal(); } inline SVal GRState::getSVal(Loc LV, QualType T) const { - return Mgr->GetSVal(this, LV, T); + return Mgr->StoreMgr->Retrieve(this, LV, T); } inline SVal GRState::getSVal(const MemRegion* R) const { diff --git a/lib/Analysis/BugReporter.cpp b/lib/Analysis/BugReporter.cpp index 5dbbfc33e4..9c9029cfff 100644 --- a/lib/Analysis/BugReporter.cpp +++ b/lib/Analysis/BugReporter.cpp @@ -380,7 +380,7 @@ public: return true; // Check if the previous state has this binding. - SVal X = VMgr.GetSVal(PrevSt, loc::MemRegionVal(R)); + SVal X = PrevSt->getSVal(loc::MemRegionVal(R)); if (X == V) // Same binding? return true; diff --git a/lib/Analysis/GRState.cpp b/lib/Analysis/GRState.cpp index aeb1c04caf..a64b2d7f5f 100644 --- a/lib/Analysis/GRState.cpp +++ b/lib/Analysis/GRState.cpp @@ -282,7 +282,7 @@ bool GRState::scanReachableSymbols(SVal val, SymbolVisitor& visitor) const { bool GRStateManager::isEqual(const GRState* state, Expr* Ex, const llvm::APSInt& Y) { - SVal V = GetSVal(state, Ex); + SVal V = state->getSVal(Ex); if (loc::ConcreteInt* X = dyn_cast<loc::ConcreteInt>(&V)) return X->getValue() == Y; |