diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp index f28dbaac2d45c..b53c14424a700 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -4801,11 +4801,8 @@ void InnerLoopVectorizer::widenPHIInstruction(Instruction *PN, bool IsOrdered = State.VF.isVector() && Cost->isInLoopReduction(cast(PN)) && Cost->useOrderedReductions(*RdxDesc); - - for (unsigned Part = 0; Part < State.UF; ++Part) { - // This is phase one of vectorizing PHIs. - if (Part > 0 && IsOrdered) - return; + unsigned LastPartForNewPhi = IsOrdered ? 1 : State.UF; + for (unsigned Part = 0; Part < LastPartForNewPhi; ++Part) { Value *EntryPart = PHINode::Create( VecTy, 2, "vec.phi", &*LoopVectorBody->getFirstInsertionPt()); State.set(PhiR, EntryPart, Part);