[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