diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-06-24 22:15:30 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-06-24 22:15:30 +0000 |
commit | 233e913eec6c178ab58d901a212318bae95dbebd (patch) | |
tree | a642f7235d270a8feb9861d48ab371b686e624ee | |
parent | 3eb43a0f6211070522e5ea85acfce355b01aba71 (diff) |
Remove GRStateManager::GetSValAsScalarOrLoc()/GetSVal().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74128 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Analysis/PathSensitive/GRState.h | 26 | ||||
-rw-r--r-- | lib/Analysis/GRExprEngineInternalChecks.cpp | 3 | ||||
-rw-r--r-- | lib/Analysis/GRState.cpp | 16 |
3 files changed, 18 insertions, 27 deletions
diff --git a/include/clang/Analysis/PathSensitive/GRState.h b/include/clang/Analysis/PathSensitive/GRState.h index 38a2b5bec3..3278e0cffe 100644 --- a/include/clang/Analysis/PathSensitive/GRState.h +++ b/include/clang/Analysis/PathSensitive/GRState.h @@ -559,26 +559,6 @@ public: void iterBindings(const GRState* state, StoreManager::BindingsHandler& F) { StoreMgr->iterBindings(state->getStore(), F); } - - SVal GetSVal(const GRState* state, const MemRegion* R) { - return StoreMgr->Retrieve(state, loc::MemRegionVal(R)); - } - - SVal GetSValAsScalarOrLoc(const GRState* state, const MemRegion *R) { - // We only want to do fetches from regions that we can actually bind - // values. For example, SymbolicRegions of type 'id<...>' cannot - // have direct bindings (but their can be bindings on their subregions). - if (!R->isBoundable()) - return UnknownVal(); - - if (const TypedRegion *TR = dyn_cast<TypedRegion>(R)) { - QualType T = TR->getValueType(getContext()); - if (Loc::IsLocType(T) || T->isIntegerType()) - return GetSVal(state, R); - } - - return UnknownVal(); - } const GRState* getPersistentState(GRState& Impl); @@ -764,11 +744,7 @@ inline SVal GRState::getSVal(Loc LV, QualType T) const { } inline SVal GRState::getSVal(const MemRegion* R) const { - return Mgr->GetSVal(this, R); -} - -inline SVal GRState::getSValAsScalarOrLoc(const MemRegion *R) const { - return Mgr->GetSValAsScalarOrLoc(this, R); + return Mgr->StoreMgr->Retrieve(this, loc::MemRegionVal(R)); } inline BasicValueFactory &GRState::getBasicVals() const { diff --git a/lib/Analysis/GRExprEngineInternalChecks.cpp b/lib/Analysis/GRExprEngineInternalChecks.cpp index 13df89ebbf..76d26dd9f0 100644 --- a/lib/Analysis/GRExprEngineInternalChecks.cpp +++ b/lib/Analysis/GRExprEngineInternalChecks.cpp @@ -672,7 +672,6 @@ public: return NULL; if (!StoreSite) { - GRStateManager &StateMgr = BRC.getStateManager(); const ExplodedNode<GRState> *Node = N, *Last = NULL; for ( ; Node ; Last = Node, Node = Node->getFirstPred()) { @@ -686,7 +685,7 @@ public: } } - if (StateMgr.GetSVal(Node->getState(), R) != V) + if (Node->getState()->getSVal(R) != V) break; } diff --git a/lib/Analysis/GRState.cpp b/lib/Analysis/GRState.cpp index 3217c4ac4d..65db6a29c8 100644 --- a/lib/Analysis/GRState.cpp +++ b/lib/Analysis/GRState.cpp @@ -68,6 +68,22 @@ const GRState *GRState::unbindLoc(Loc LV) const { return Mgr->getPersistentState(NewSt); } +SVal GRState::getSValAsScalarOrLoc(const MemRegion *R) const { + // We only want to do fetches from regions that we can actually bind + // values. For example, SymbolicRegions of type 'id<...>' cannot + // have direct bindings (but their can be bindings on their subregions). + if (!R->isBoundable()) + return UnknownVal(); + + if (const TypedRegion *TR = dyn_cast<TypedRegion>(R)) { + QualType T = TR->getValueType(Mgr->getContext()); + if (Loc::IsLocType(T) || T->isIntegerType()) + return getSVal(R); + } + + return UnknownVal(); +} + const GRState* GRStateManager::getInitialState() { GRState StateImpl(this, EnvMgr.getInitialEnvironment(), StoreMgr->getInitialStore(), |