[llvm] [VPlan] Verify dominance for incoming values of phi-like recipes. (PR #124838)
via llvm-commits
llvm-commits at lists.llvm.org
Wed May 14 16:12:39 PDT 2025
================
@@ -220,12 +219,28 @@ bool VPlanVerifier::verifyVPBasicBlock(const VPBasicBlock *VPBB) {
for (const VPUser *U : V->users()) {
auto *UI = cast<VPRecipeBase>(U);
- // TODO: check dominance of incoming values for phis properly.
- if (!UI ||
- isa<VPHeaderPHIRecipe, VPWidenPHIRecipe, VPPredInstPHIRecipe,
- VPIRPhi>(UI) ||
- (isa<VPInstruction>(UI) &&
- cast<VPInstruction>(UI)->getOpcode() == Instruction::PHI))
+ if (auto *Phi = dyn_cast<VPPhiAccessors>(UI)) {
+ for (unsigned Idx = 0; Idx != Phi->getNumIncoming(); ++Idx) {
+ VPValue *IncVPV = Phi->getIncomingValue(Idx);
+ const VPBasicBlock *IncVPBB = Phi->getIncomingBlock(Idx);
+ if (IncVPV != V)
+ continue;
+ if (IncVPBB != VPBB && !VPDT.dominates(VPBB, IncVPBB)) {
----------------
ayalz wrote:
Ah, right; a value can be defined in the header and feed a header phi (of the same header block) even when the loop has additional blocks. Can check that in this case it's the 2nd incoming of the phi, i.e., across the backedge.
https://github.com/llvm/llvm-project/pull/124838
More information about the llvm-commits
mailing list