[llvm] [VPlan] Use RPOT traversal in CSE, fixing potential crash (PR #187548)
Ramkumar Ramachandra via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 31 01:02:46 PDT 2026
================
@@ -2687,6 +2687,12 @@ void VPlanTransforms::cse(VPlan &Plan) {
auto *Def = dyn_cast<VPSingleDefRecipe>(&R);
if (!Def || !VPCSEDenseMapInfo::canHandle(Def))
continue;
+ // The def must dominates all uses, an invariant which could be broken
+ // when the use is in a non-dominated sucessor-phi.
+ if (any_of(Def->users(), [&VPDT, &VPBB](VPUser *U) {
+ return !VPDT.dominates(VPBB, cast<VPRecipeBase>(U)->getParent());
+ }))
+ continue;
----------------
artagnon wrote:
Er, yes: you're absolutely right :)
https://github.com/llvm/llvm-project/pull/187548
More information about the llvm-commits
mailing list