[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 07:33:05 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:
`dominates(VPBB, IncVPBB)` returns true when VPBB == IncVPBB, so suffice to check `if (!VPDT.dominates(VPBB, IncVPBB))`? But is it ok to have VPBB == IncVPBB, given that U is a phi - only if V is a phi too and such dependences between two phi's of the same block are allowed in VPlan, where fixed order dependences are modelled with intervening splices - for VF>1?
In any case good to continue with early continue:
```suggestion
if (VPDT.properlyDominates(VPBB, IncVPBB))
continue;
```
https://github.com/llvm/llvm-project/pull/124838
More information about the llvm-commits
mailing list