[llvm] [VPlan] Add exit phi operands during initial construction (NFC). (PR #136455)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 22 13:32:47 PDT 2025
================
@@ -352,6 +352,20 @@ std::unique_ptr<VPlan> PlainCFGBuilder::buildPlainCFG(
Plan->getEntry()->setOneSuccessor(getOrCreateVPBB(TheLoop->getHeader()));
Plan->getEntry()->setPlan(&*Plan);
+ // Fix VPlan loop-closed-ssa exit phi's by add incoming operands to the
+ // VPIRInstructions wrapping them.
+ for (auto *EB : Plan->getExitBlocks()) {
+ for (VPRecipeBase &R : EB->phis()) {
+ auto *PhiR = cast<VPIRPhi>(&R);
+ PHINode &Phi = PhiR->getIRPhi();
+ assert(PhiR->getNumOperands() == 0 &&
+ "no phi operands should be added yet");
+ for (BasicBlock *Pred : predecessors(EB->getIRBasicBlock()))
+ PhiR->addOperand(
+ getOrCreateVPOperand(Phi.getIncomingValueForBlock(Pred)));
----------------
ayalz wrote:
Order of operands set here corresponds to the order of predecessors of underlying IRBB, before EB VPBB has predecessors. This inconsistency requires attention later, when these predecessors are added, possibly in a different order. May be worth leaving a note.
https://github.com/llvm/llvm-project/pull/136455
More information about the llvm-commits
mailing list