diff --git a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp index c8a2d84a535d3..b73a526f142b5 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp @@ -924,20 +924,15 @@ static void removeRedundantExpandSCEVRecipes(VPlan &Plan) { } static void recursivelyDeleteDeadRecipes(VPValue *V) { - SmallVector WorkList; - SmallPtrSet Seen; - WorkList.push_back(V); + SetVector WorkList; + WorkList.insert(V); - while (!WorkList.empty()) { - VPValue *Cur = WorkList.pop_back_val(); - if (!Seen.insert(Cur).second) - continue; + for (unsigned I = 0; I < WorkList.size(); ++I) { + VPValue *Cur = WorkList[I]; VPRecipeBase *R = Cur->getDefiningRecipe(); - if (!R) - continue; - if (!isDeadRecipe(*R)) + if (!R || !isDeadRecipe(*R)) continue; - WorkList.append(R->op_begin(), R->op_end()); + WorkList.insert_range(R->operands()); R->eraseFromParent(); } }