[llvm] [VPlan] Run removeDeadRecipes early. (PR #190191)
Ramkumar Ramachandra via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 30 08:02:36 PDT 2026
================
@@ -3518,6 +3522,16 @@ void VPlanTransforms::createInterleaveGroups(
// single VPInterleaveRecipe at its insertion point.
VPDominatorTree VPDT(Plan);
for (const auto *IG : InterleaveGroups) {
+ // Skip interleave groups where members don't have recipes. This can happen
+ // when removeDeadRecipes removes recipes that are part of interleave groups
+ // but have no users.
+ if (llvm::any_of(llvm::seq(IG->getFactor()),
+ [IG, &RecipeBuilder](unsigned I) {
+ Instruction *Member = IG->getMember(I);
+ return Member && !RecipeBuilder.hasRecipe(Member);
+ }))
----------------
artagnon wrote:
```suggestion
if (llvm::any_of(IG->members(),
[&RecipeBuilder](Instruction *M) {
return !RecipeBuilder.hasRecipe(M);
}))
```
Would be good to introduce InterleaveGroup::members() that returns Members.values(). Can the Member instruction ever be nullptr? Wouldn't a lot of other things fail if so?
https://github.com/llvm/llvm-project/pull/190191
More information about the llvm-commits
mailing list