forked from OSchip/llvm-project
StoreManager::RemoveDeadBindings() can take a Store instead of an entire GRState now.
llvm-svn: 111103
This commit is contained in:
parent
d0fcc9a818
commit
ee770d40fd
|
@ -149,9 +149,8 @@ public:
|
|||
return UnknownVal();
|
||||
}
|
||||
|
||||
virtual const GRState *RemoveDeadBindings(GRState &state,
|
||||
const StackFrameContext *LCtx,
|
||||
SymbolReaper& SymReaper,
|
||||
virtual Store RemoveDeadBindings(Store store, const StackFrameContext *LCtx,
|
||||
SymbolReaper& SymReaper,
|
||||
llvm::SmallVectorImpl<const MemRegion*>& RegionRoots) = 0;
|
||||
|
||||
virtual Store BindDecl(Store store, const VarRegion *VR, SVal initVal) = 0;
|
||||
|
|
|
@ -77,9 +77,8 @@ public:
|
|||
|
||||
/// RemoveDeadBindings - Scans a BasicStore of 'state' for dead values.
|
||||
/// It updatees the GRState object in place with the values removed.
|
||||
const GRState *RemoveDeadBindings(GRState &state,
|
||||
const StackFrameContext *LCtx,
|
||||
SymbolReaper& SymReaper,
|
||||
Store RemoveDeadBindings(Store store, const StackFrameContext *LCtx,
|
||||
SymbolReaper& SymReaper,
|
||||
llvm::SmallVectorImpl<const MemRegion*>& RegionRoots);
|
||||
|
||||
void iterBindings(Store store, BindingsHandler& f);
|
||||
|
@ -281,12 +280,11 @@ Store BasicStoreManager::Remove(Store store, Loc loc) {
|
|||
}
|
||||
}
|
||||
|
||||
const GRState *BasicStoreManager::RemoveDeadBindings(GRState &state,
|
||||
Store BasicStoreManager::RemoveDeadBindings(Store store,
|
||||
const StackFrameContext *LCtx,
|
||||
SymbolReaper& SymReaper,
|
||||
llvm::SmallVectorImpl<const MemRegion*>& RegionRoots)
|
||||
{
|
||||
Store store = state.getStore();
|
||||
BindingsTy B = GetBindings(store);
|
||||
typedef SVal::symbol_iterator symbol_iterator;
|
||||
|
||||
|
@ -361,8 +359,7 @@ const GRState *BasicStoreManager::RemoveDeadBindings(GRState &state,
|
|||
}
|
||||
}
|
||||
|
||||
state.setStore(store);
|
||||
return StateMgr.getPersistentState(state);
|
||||
return store;
|
||||
}
|
||||
|
||||
Store BasicStoreManager::scanForIvars(Stmt *B, const Decl* SelfDecl,
|
||||
|
|
|
@ -44,11 +44,10 @@ public:
|
|||
}
|
||||
|
||||
SVal ArrayToPointer(Loc Array);
|
||||
const GRState *RemoveDeadBindings(GRState &state,
|
||||
const StackFrameContext *LCtx,
|
||||
Store RemoveDeadBindings(Store store, const StackFrameContext *LCtx,
|
||||
SymbolReaper& SymReaper,
|
||||
llvm::SmallVectorImpl<const MemRegion*>& RegionRoots){
|
||||
return StateMgr.getPersistentState(state);
|
||||
return store;
|
||||
}
|
||||
|
||||
Store BindDecl(Store store, const VarRegion *VR, SVal initVal);
|
||||
|
|
|
@ -51,10 +51,10 @@ GRStateManager::RemoveDeadBindings(const GRState* state,
|
|||
state, RegionRoots);
|
||||
|
||||
// Clean up the store.
|
||||
const GRState *s = StoreMgr->RemoveDeadBindings(NewState, LCtx,
|
||||
SymReaper, RegionRoots);
|
||||
|
||||
return ConstraintMgr->RemoveDeadBindings(s, SymReaper);
|
||||
NewState.St = StoreMgr->RemoveDeadBindings(NewState.St, LCtx,
|
||||
SymReaper, RegionRoots);
|
||||
state = getPersistentState(NewState);
|
||||
return ConstraintMgr->RemoveDeadBindings(state, SymReaper);
|
||||
}
|
||||
|
||||
const GRState *GRStateManager::MarshalState(const GRState *state,
|
||||
|
|
|
@ -347,9 +347,8 @@ public: // Part of public interface to class.
|
|||
|
||||
/// RemoveDeadBindings - Scans the RegionStore of 'state' for dead values.
|
||||
/// It returns a new Store with these values removed.
|
||||
const GRState *RemoveDeadBindings(GRState &state,
|
||||
const StackFrameContext *LCtx,
|
||||
SymbolReaper& SymReaper,
|
||||
Store RemoveDeadBindings(Store store, const StackFrameContext *LCtx,
|
||||
SymbolReaper& SymReaper,
|
||||
llvm::SmallVectorImpl<const MemRegion*>& RegionRoots);
|
||||
|
||||
Store EnterStackFrame(const GRState *state, const StackFrameContext *frame);
|
||||
|
@ -1792,12 +1791,12 @@ bool RemoveDeadBindingsWorker::UpdatePostponed() {
|
|||
return changed;
|
||||
}
|
||||
|
||||
const GRState *RegionStoreManager::RemoveDeadBindings(GRState &state,
|
||||
Store RegionStoreManager::RemoveDeadBindings(Store store,
|
||||
const StackFrameContext *LCtx,
|
||||
SymbolReaper& SymReaper,
|
||||
llvm::SmallVectorImpl<const MemRegion*>& RegionRoots)
|
||||
{
|
||||
RegionBindings B = GetRegionBindings(state.getStore());
|
||||
RegionBindings B = GetRegionBindings(store);
|
||||
RemoveDeadBindingsWorker W(*this, StateMgr, B, SymReaper, LCtx);
|
||||
W.GenerateClusters();
|
||||
|
||||
|
@ -1830,9 +1829,8 @@ const GRState *RegionStoreManager::RemoveDeadBindings(GRState &state,
|
|||
for (; SI != SE; ++SI)
|
||||
SymReaper.maybeDead(*SI);
|
||||
}
|
||||
state.setStore(B.getRoot());
|
||||
const GRState *s = StateMgr.getPersistentState(state);
|
||||
return s;
|
||||
|
||||
return B.getRoot();
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue