[llvm] [VPlan] Retain exit conditions and edges in initial VPlan (NFC). (PR #137709)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Wed May 7 08:58:31 PDT 2025
================
@@ -491,12 +480,34 @@ void VPlanTransforms::prepareForVectorization(VPlan &Plan, Type *InductionTy,
VPBlockUtils::insertBlockAfter(VecPreheader, Plan.getEntry());
VPBasicBlock *MiddleVPBB = Plan.createVPBasicBlock("middle.block");
- VPBlockUtils::connectBlocks(LatchVPB, MiddleVPBB);
- LatchVPB->swapSuccessors();
+ // The canonical LatchVPB has the header block as last successor. If it has
+ // another successor, this successor is an exit block - insert middle block on
+ // its edge. Otherwise, add middle block as another successor retaining header
+ // as last.
----------------
fhahn wrote:
We can vectorize loops where the latch isn’t exiting, by requiring at least one iteration in the scalar loop. In that case, the original latch will
Have a single successor
https://github.com/llvm/llvm-project/pull/137709
More information about the llvm-commits
mailing list