[llvm] [VPlan] Run more passes through `RUN_VPLAN_PASS[_NO_VERIFY]` (PR #180580)

Luke Lau via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 11 00:41:28 PST 2026


================
@@ -8417,32 +8427,32 @@ VPlanPtr LoopVectorizationPlanner::tryToBuildVPlan(VFRange &Range) {
       OrigLoop, *LI, Legal->getWidestInductionType(),
       getDebugLocFromInstOrOperands(Legal->getPrimaryInduction()), PSE);
 
-  VPlanTransforms::createHeaderPhiRecipes(
-      *Plan, PSE, *OrigLoop, Legal->getInductionVars(),
-      MapVector<PHINode *, RecurrenceDescriptor>(),
+  RUN_VPLAN_PASS_NO_VERIFY(
+      VPlanTransforms::createHeaderPhiRecipes, *Plan, PSE, *OrigLoop,
+      Legal->getInductionVars(), MapVector<PHINode *, RecurrenceDescriptor>(),
       SmallPtrSet<const PHINode *, 1>(), SmallPtrSet<PHINode *, 1>(),
       /*AllowReordering=*/false);
-  VPlanTransforms::handleEarlyExits(*Plan,
-                                    /*HasUncountableExit*/ false);
-  VPlanTransforms::addMiddleCheck(*Plan, /*RequiresScalarEpilogue*/ true,
-                                  /*TailFolded*/ false);
+  RUN_VPLAN_PASS_NO_VERIFY(VPlanTransforms::handleEarlyExits, *Plan,
+                           /*HasUncountableExit*/ false);
+  RUN_VPLAN_PASS_NO_VERIFY(VPlanTransforms::addMiddleCheck, *Plan,
+                           /*RequiresScalarEpilogue*/ true,
+                           /*TailFolded*/ false);
 
-  VPlanTransforms::createLoopRegions(*Plan);
+  RUN_VPLAN_PASS_NO_VERIFY(VPlanTransforms::createLoopRegions, *Plan);
 
   for (ElementCount VF : Range)
     Plan->addVF(VF);
 
-  if (!VPlanTransforms::tryToConvertVPInstructionsToVPRecipes(*Plan, *TLI))
+  if (!RUN_VPLAN_PASS_NO_VERIFY(
+          VPlanTransforms::tryToConvertVPInstructionsToVPRecipes, *Plan, *TLI))
     return nullptr;
 
   // TODO: IVEndValues are not used yet in the native path, to optimize exit
   // values.
   // TODO: We can't call runPass on the transform yet, due to verifier
   // failures.
   DenseMap<VPValue *, VPValue *> IVEndValues;
-  VPlanTransforms::updateScalarResumePhis(*Plan, IVEndValues);
-
-  assert(verifyVPlanIsValid(*Plan) && "VPlan is invalid");
----------------
lukel97 wrote:

I think this assert should still be kept because it runs even when -vplan-verify-each is false?

https://github.com/llvm/llvm-project/pull/180580


More information about the llvm-commits mailing list