diff options
author | Anna Zaks <ganna@apple.com> | 2012-03-28 17:05:50 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-03-28 17:05:50 +0000 |
commit | 850d2dea829527708af9854c1121bd707d544799 (patch) | |
tree | 55b2d7873cb019abfcf087bc0302497ce6b34a2a /clang/lib/StaticAnalyzer/Core/CoreEngine.cpp | |
parent | 8293bae850d06b35d61ec10039d3d0fdabae481b (diff) | |
download | bcm5719-llvm-850d2dea829527708af9854c1121bd707d544799.tar.gz bcm5719-llvm-850d2dea829527708af9854c1121bd707d544799.zip |
[analyser] Stats checker: do not mark a node as exhausted if we will
retry without inlining.
(+ other minor cleanups)
llvm-svn: 153581
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/CoreEngine.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/CoreEngine.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp b/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp index f303c7af3a0..de94f0f2ddc 100644 --- a/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp +++ b/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp @@ -263,15 +263,16 @@ void CoreEngine::dispatchWorkItem(ExplodedNode* Pred, ProgramPoint Loc, } } -void CoreEngine::ExecuteWorkListWithInitialState(const LocationContext *L, +bool CoreEngine::ExecuteWorkListWithInitialState(const LocationContext *L, unsigned Steps, ProgramStateRef InitState, ExplodedNodeSet &Dst) { - ExecuteWorkList(L, Steps, InitState); + bool DidNotFinish = ExecuteWorkList(L, Steps, InitState); for (ExplodedGraph::eop_iterator I = G->eop_begin(), E = G->eop_end(); I != E; ++I) { Dst.Add(*I); } + return DidNotFinish; } void CoreEngine::HandleBlockEdge(const BlockEdge &L, ExplodedNode *Pred) { @@ -296,7 +297,7 @@ void CoreEngine::HandleBlockEdge(const BlockEdge &L, ExplodedNode *Pred) { ExplodedNodeSet dstNodes; BlockEntrance BE(Blk, Pred->getLocationContext()); NodeBuilderWithSinks nodeBuilder(Pred, dstNodes, BuilderCtx, BE); - SubEng.processCFGBlockEntrance(nodeBuilder); + SubEng.processCFGBlockEntrance(L, nodeBuilder); // Auto-generate a node. if (!nodeBuilder.hasGeneratedNodes()) { @@ -305,13 +306,6 @@ void CoreEngine::HandleBlockEdge(const BlockEdge &L, ExplodedNode *Pred) { // Enqueue nodes onto the worklist. enqueue(dstNodes); - - // Make sink nodes as exhausted. - const SmallVectorImpl<ExplodedNode*> &Sinks = nodeBuilder.getSinks(); - for (SmallVectorImpl<ExplodedNode*>::const_iterator - I =Sinks.begin(), E = Sinks.end(); I != E; ++I) { - blocksExhausted.push_back(std::make_pair(L, *I)); - } } void CoreEngine::HandleBlockEntrance(const BlockEntrance &L, |