From 596b9d1f0065bc339076efe873afd9b94ace30d7 Mon Sep 17 00:00:00 2001 From: Ramkumar Ramachandra Date: Mon, 3 Nov 2025 10:16:40 +0000 Subject: [PATCH 1/2] [VPlan] Strip bad assert in VPTransformState::get (NFC) The assert only currently holds by chance, as vputils::isSingleScalar handles a lot more recipes. --- llvm/lib/Transforms/Vectorize/VPlan.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/llvm/lib/Transforms/Vectorize/VPlan.cpp b/llvm/lib/Transforms/Vectorize/VPlan.cpp index 428a8f4c1348f..5b712d796496a 100644 --- a/llvm/lib/Transforms/Vectorize/VPlan.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlan.cpp @@ -308,11 +308,6 @@ Value *VPTransformState::get(const VPValue *Def, bool NeedsScalar) { VPLane LastLane(IsSingleScalar ? 0 : VF.getFixedValue() - 1); // Check if there is a scalar value for the selected lane. if (!hasScalarValue(Def, LastLane)) { - // At the moment, VPWidenIntOrFpInductionRecipes, VPScalarIVStepsRecipes and - // VPExpandSCEVRecipes can also be a single scalar. - assert((isa(Def->getDefiningRecipe())) && - "unexpected recipe found to be invariant"); IsSingleScalar = true; LastLane = 0; } From e8e57d57f7019dfe3a81d0a06224d67f303340f8 Mon Sep 17 00:00:00 2001 From: Ramkumar Ramachandra Date: Tue, 4 Nov 2025 16:34:11 +0000 Subject: [PATCH 2/2] [VPlan] Strip entire block --- llvm/lib/Transforms/Vectorize/VPlan.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/llvm/lib/Transforms/Vectorize/VPlan.cpp b/llvm/lib/Transforms/Vectorize/VPlan.cpp index 5b712d796496a..dd26a059d56ad 100644 --- a/llvm/lib/Transforms/Vectorize/VPlan.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlan.cpp @@ -304,13 +304,7 @@ Value *VPTransformState::get(const VPValue *Def, bool NeedsScalar) { } bool IsSingleScalar = vputils::isSingleScalar(Def); - VPLane LastLane(IsSingleScalar ? 0 : VF.getFixedValue() - 1); - // Check if there is a scalar value for the selected lane. - if (!hasScalarValue(Def, LastLane)) { - IsSingleScalar = true; - LastLane = 0; - } // We need to construct the vector value for a single-scalar value by // broadcasting the scalar to all lanes.