summaryrefslogtreecommitdiffstats
path: root/clang/Analysis/GREngine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/Analysis/GREngine.cpp')
-rw-r--r--clang/Analysis/GREngine.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/Analysis/GREngine.cpp b/clang/Analysis/GREngine.cpp
index 46fbd187f17..8e86d08daad 100644
--- a/clang/Analysis/GREngine.cpp
+++ b/clang/Analysis/GREngine.cpp
@@ -301,7 +301,7 @@ ExplodedNodeImpl* GRBranchNodeBuilderImpl::generateNodeImpl(void* State,
else GeneratedFalse = true;
if (IsNew) {
- Eng.WList->Enqueue(GRWorkListUnit(Succ));
+ Deferred.push_back(Succ);
return Succ;
}
@@ -311,4 +311,7 @@ ExplodedNodeImpl* GRBranchNodeBuilderImpl::generateNodeImpl(void* State,
GRBranchNodeBuilderImpl::~GRBranchNodeBuilderImpl() {
if (!GeneratedTrue) generateNodeImpl(Pred->State, true);
if (!GeneratedFalse) generateNodeImpl(Pred->State, false);
+
+ for (DeferredTy::iterator I=Deferred.begin(), E=Deferred.end(); I!=E; ++I)
+ if (!(*I)->isSink()) Eng.WList->Enqueue(GRWorkListUnit(*I));
}
OpenPOWER on IntegriCloud