diff options
author | Anna Zaks <ganna@apple.com> | 2011-09-22 18:10:41 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2011-09-22 18:10:41 +0000 |
commit | 9db35a87508147007ea1d3aa1a7b3d56ed65138e (patch) | |
tree | cc3064f08d1e91486ac131eea0daa2b32f0b8339 /clang/lib/StaticAnalyzer/Core/ProgramState.cpp | |
parent | f04ee930a039e5710ca44997f14ddfb96a0ba7e0 (diff) | |
download | bcm5719-llvm-9db35a87508147007ea1d3aa1a7b3d56ed65138e.tar.gz bcm5719-llvm-9db35a87508147007ea1d3aa1a7b3d56ed65138e.zip |
ST->scanReachableSymbols() is creating a SubRegionMap (SRM) on every call since one SRM is created in each ScanReachableSymbols instance. Creating the object just once and calling only scan inside the loop gives ~ 14% speed up of the StaticAnalyzer run (Release+Asserts).
Pull out the declaration of the ScanReachableSymbols so that it can be used directly. Document ProgramState::scanReachableSymbols() methods.
llvm-svn: 140323
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/ProgramState.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/ProgramState.cpp | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp index 6a03a3e8cce..73788cc42ef 100644 --- a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp +++ b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp @@ -513,35 +513,6 @@ const ProgramState *ProgramStateManager::removeGDM(const ProgramState *state, vo return getPersistentState(NewState); } -//===----------------------------------------------------------------------===// -// Utility. -//===----------------------------------------------------------------------===// - -namespace { -class ScanReachableSymbols : public SubRegionMap::Visitor { - typedef llvm::DenseMap<const void*, unsigned> VisitedItems; - - VisitedItems visited; - const ProgramState *state; - SymbolVisitor &visitor; - llvm::OwningPtr<SubRegionMap> SRM; -public: - - ScanReachableSymbols(const ProgramState *st, SymbolVisitor& v) - : state(st), visitor(v) {} - - bool scan(nonloc::CompoundVal val); - bool scan(SVal val); - bool scan(const MemRegion *R); - bool scan(const SymExpr *sym); - - // From SubRegionMap::Visitor. - bool Visit(const MemRegion* Parent, const MemRegion* SubRegion) { - return scan(SubRegion); - } -}; -} - bool ScanReachableSymbols::scan(nonloc::CompoundVal val) { for (nonloc::CompoundVal::iterator I=val.begin(), E=val.end(); I!=E; ++I) if (!scan(*I)) |