summaryrefslogtreecommitdiffstats
path: root/clang/lib/Checker/GRCoreEngine.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-06-29 21:58:54 +0000
committerTed Kremenek <kremenek@apple.com>2010-06-29 21:58:54 +0000
commit090d62e7cc53dddb451a120d3d10dd84a296e465 (patch)
treef3f87af215fe54ffc6891f24bfdbaa1a345c8e67 /clang/lib/Checker/GRCoreEngine.cpp
parentc728518bfefd2bff34a198a8fe7de9e80a5cb1f1 (diff)
downloadbcm5719-llvm-090d62e7cc53dddb451a120d3d10dd84a296e465.tar.gz
bcm5719-llvm-090d62e7cc53dddb451a120d3d10dd84a296e465.zip
Tweaker Checker::VisitEndAnalysis to have 'hasWorkRemaining' also
be true if some paths were aborted because they exceeded the maximum loop unrolling count. llvm-svn: 107209
Diffstat (limited to 'clang/lib/Checker/GRCoreEngine.cpp')
-rw-r--r--clang/lib/Checker/GRCoreEngine.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Checker/GRCoreEngine.cpp b/clang/lib/Checker/GRCoreEngine.cpp
index 36f330303c3..a816186a307 100644
--- a/clang/lib/Checker/GRCoreEngine.cpp
+++ b/clang/lib/Checker/GRCoreEngine.cpp
@@ -221,7 +221,7 @@ bool GRCoreEngine::ExecuteWorkList(const LocationContext *L, unsigned Steps) {
}
}
- SubEngine.ProcessEndWorklist(WList->hasWork());
+ SubEngine.ProcessEndWorklist(WList->hasWork() || BlockAborted);
return WList->hasWork();
}
@@ -258,7 +258,10 @@ void GRCoreEngine::HandleBlockEdge(const BlockEdge& L, ExplodedNode* Pred) {
// FIXME: Should we allow ProcessBlockEntrance to also manipulate state?
if (ProcessBlockEntrance(Blk, Pred, WList->getBlockCounter()))
- GenerateNode(BlockEntrance(Blk, Pred->getLocationContext()), Pred->State, Pred);
+ GenerateNode(BlockEntrance(Blk, Pred->getLocationContext()),
+ Pred->State, Pred);
+ else
+ BlockAborted = true;
}
void GRCoreEngine::HandleBlockEntrance(const BlockEntrance& L,
OpenPOWER on IntegriCloud