diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-02-13 00:54:03 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-02-13 00:54:03 +0000 |
commit | 7950b7843072300731412c4fb7ba95aa01ace99d (patch) | |
tree | 22c7ac20af63fab78d473e2c9fd51ecdb716d7b5 | |
parent | 509154e0f9642a3d0c5b43ca3c93710821248dcd (diff) | |
download | bcm5719-llvm-7950b7843072300731412c4fb7ba95aa01ace99d.tar.gz bcm5719-llvm-7950b7843072300731412c4fb7ba95aa01ace99d.zip |
Pull logic for visiting value bindings in InvalidateRegionsWorker into a separate method.
No functionality change.
llvm-svn: 96060
-rw-r--r-- | clang/lib/Checker/RegionStore.cpp | 48 |
1 files changed, 28 insertions, 20 deletions
diff --git a/clang/lib/Checker/RegionStore.cpp b/clang/lib/Checker/RegionStore.cpp index 4a8d9a0b0a9..ed1737cddb0 100644 --- a/clang/lib/Checker/RegionStore.cpp +++ b/clang/lib/Checker/RegionStore.cpp @@ -473,19 +473,27 @@ class InvalidateRegionsWorker { BumpVectorContext BVC; ClusterMap ClusterM; - WorkList WL; + WorkList WL; + + StoreManager::InvalidatedSymbols *IS; + ASTContext &Ctx; + ValueManager &ValMgr; + public: + InvalidateRegionsWorker(StoreManager::InvalidatedSymbols *is, + ASTContext &ctx, ValueManager &valMgr) + : IS(is), Ctx(ctx), ValMgr(valMgr) {} + Store InvalidateRegions(RegionStoreManager &RM, Store store, const MemRegion * const *I,const MemRegion * const *E, - const Expr *Ex, unsigned Count, - StoreManager::InvalidatedSymbols *IS, - ASTContext &Ctx, ValueManager &ValMgr); + const Expr *Ex, unsigned Count); private: void AddToWorkList(BindingKey K); void AddToWorkList(const MemRegion *R); void AddToCluster(BindingKey K); RegionCluster **getCluster(const MemRegion *R); + void VisitBinding(SVal V); }; } @@ -520,14 +528,22 @@ InvalidateRegionsWorker::getCluster(const MemRegion *R) { return &CRef; } +void InvalidateRegionsWorker::VisitBinding(SVal V) { + if (const MemRegion *R = V.getAsRegion()) + AddToWorkList(R); + + // A symbol? Mark it touched by the invalidation. + if (IS) + if (SymbolRef Sym = V.getAsSymbol()) + IS->insert(Sym); +} + Store InvalidateRegionsWorker::InvalidateRegions(RegionStoreManager &RM, Store store, const MemRegion * const *I, const MemRegion * const *E, - const Expr *Ex, unsigned Count, - StoreManager::InvalidatedSymbols *IS, - ASTContext &Ctx, - ValueManager &ValMgr) { + const Expr *Ex, unsigned Count) +{ RegionBindings B = RegionStoreManager::GetRegionBindings(store); // Scan the entire store and make the region clusters. @@ -554,15 +570,8 @@ Store InvalidateRegionsWorker::InvalidateRegions(RegionStoreManager &RM, BindingKey K = *I; // Get the old binding. Is it a region? If so, add it to the worklist. - if (const SVal *V = RM.Lookup(B, K)) { - if (const MemRegion *R = V->getAsRegion()) - AddToWorkList(R); - - // A symbol? Mark it touched by the invalidation. - if (IS) - if (SymbolRef Sym = V->getAsSymbol()) - IS->insert(Sym); - } + if (const SVal *V = RM.Lookup(B, K)) + VisitBinding(*V); B = RM.Remove(B, K); } @@ -643,9 +652,8 @@ Store RegionStoreManager::InvalidateRegions(Store store, const MemRegion * const *E, const Expr *Ex, unsigned Count, InvalidatedSymbols *IS) { - InvalidateRegionsWorker W; - return W.InvalidateRegions(*this, store, I, E, Ex, Count, IS, getContext(), - StateMgr.getValueManager()); + InvalidateRegionsWorker W(IS, getContext(), StateMgr.getValueManager()); + return W.InvalidateRegions(*this, store, I, E, Ex, Count); } //===----------------------------------------------------------------------===// |