diff options
Diffstat (limited to 'clang/Analysis/GREngine.cpp')
| -rw-r--r-- | clang/Analysis/GREngine.cpp | 5 |
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)); } |

