diff --git a/lib/SILOptimizer/Analysis/EscapeAnalysis.cpp b/lib/SILOptimizer/Analysis/EscapeAnalysis.cpp index 89f47ac688cf4..a505fdc39ba32 100644 --- a/lib/SILOptimizer/Analysis/EscapeAnalysis.cpp +++ b/lib/SILOptimizer/Analysis/EscapeAnalysis.cpp @@ -560,8 +560,10 @@ bool EscapeAnalysis::ConnectionGraph::isReachable(CGNode *From, CGNode *To) { From->isInWorkList = true; for (unsigned Idx = 0; Idx < WorkList.size(); ++Idx) { CGNode *Reachable = WorkList[Idx]; - if (Reachable == To) + if (Reachable == To) { + clearWorkListFlags(WorkList); return true; + } for (Predecessor Pred : Reachable->Preds) { CGNode *PredNode = Pred.getPointer(); if (!PredNode->isInWorkList) {