diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-02-11 04:20:16 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-02-11 04:20:16 +0000 |
commit | a9d5c30635729f076d77b4eb8d2f413b04301a89 (patch) | |
tree | 7aef68eb92be95235ebdb12216220777bdd4fb48 /lib/StaticAnalyzer/Core/GRState.cpp | |
parent | f0be979bddb8baa28e77693a3dc931e487b2a9f2 (diff) |
Allow the 'Eng' entry in GRStateManager to be a (possibly null) pointer instead of a reference.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125362 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Core/GRState.cpp')
-rw-r--r-- | lib/StaticAnalyzer/Core/GRState.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/StaticAnalyzer/Core/GRState.cpp b/lib/StaticAnalyzer/Core/GRState.cpp index 5fddcec94c..0278a0d385 100644 --- a/lib/StaticAnalyzer/Core/GRState.cpp +++ b/lib/StaticAnalyzer/Core/GRState.cpp @@ -94,8 +94,8 @@ const GRState *GRState::bindLoc(Loc LV, SVal V) const { const GRState *new_state = makeWithStore(new_store); const MemRegion *MR = LV.getAsRegion(); - if (MR) - return Mgr.getOwningEngine().processRegionChange(new_state, MR); + if (MR && Mgr.getOwningEngine()) + return Mgr.getOwningEngine()->processRegionChange(new_state, MR); return new_state; } @@ -105,7 +105,9 @@ const GRState *GRState::bindDefault(SVal loc, SVal V) const { const MemRegion *R = cast<loc::MemRegionVal>(loc).getRegion(); Store new_store = Mgr.StoreMgr->BindDefault(St, R, V); const GRState *new_state = makeWithStore(new_store); - return Mgr.getOwningEngine().processRegionChange(new_state, R); + return Mgr.getOwningEngine() ? + Mgr.getOwningEngine()->processRegionChange(new_state, R) : + new_state; } const GRState *GRState::InvalidateRegions(const MemRegion * const *Begin, @@ -114,9 +116,9 @@ const GRState *GRState::InvalidateRegions(const MemRegion * const *Begin, StoreManager::InvalidatedSymbols *IS, bool invalidateGlobals) const { GRStateManager &Mgr = getStateManager(); - SubEngine &Eng = Mgr.getOwningEngine(); - - if (Eng.wantsRegionChangeUpdate(this)) { + SubEngine* Eng = Mgr.getOwningEngine(); + + if (Eng && Eng->wantsRegionChangeUpdate(this)) { StoreManager::InvalidatedRegions Regions; Store new_store = Mgr.StoreMgr->InvalidateRegions(St, Begin, End, @@ -125,9 +127,9 @@ const GRState *GRState::InvalidateRegions(const MemRegion * const *Begin, &Regions); const GRState *new_state = makeWithStore(new_store); - return Eng.processRegionChanges(new_state, - &Regions.front(), - &Regions.back()+1); + return Eng->processRegionChanges(new_state, + &Regions.front(), + &Regions.back()+1); } Store new_store = Mgr.StoreMgr->InvalidateRegions(St, Begin, End, |