[llvm] [LV] Remove unused cost model from InnerLoopVectorizer (NFC) (PR #211594)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 23 08:51:21 PDT 2026
https://github.com/fhahn created https://github.com/llvm/llvm-project/pull/211594
InnerLoopVectorizer stored a LoopVectorizationCostModel pointer (Cost) but all users have been removed.
>From c402812ccdd6ce09156d96f5ae292f0abd1c5819 Mon Sep 17 00:00:00 2001
From: Florian Hahn <flo at fhahn.com>
Date: Thu, 23 Jul 2026 11:45:09 +0100
Subject: [PATCH] [LV] Remove unused cost model from InnerLoopVectorizer (NFC)
InnerLoopVectorizer stored a LoopVectorizationCostModel pointer (Cost)
but all users have been removed.
---
.../Transforms/Vectorize/LoopVectorize.cpp | 23 +++++++------------
1 file changed, 8 insertions(+), 15 deletions(-)
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index db900cadc3a5b..1f91502efba5d 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -542,11 +542,10 @@ class InnerLoopVectorizer {
LoopInfo *LI, DominatorTree *DT,
const TargetTransformInfo *TTI, AssumptionCache *AC,
ElementCount VecWidth, unsigned UnrollFactor,
- LoopVectorizationCostModel *CM,
GeneratedRTChecks &RTChecks, VPlan &Plan)
: OrigLoop(OrigLoop), PSE(PSE), LI(LI), DT(DT), TTI(TTI), AC(AC),
VF(VecWidth), UF(UnrollFactor), Builder(PSE.getSE()->getContext()),
- Cost(CM), RTChecks(RTChecks), Plan(Plan),
+ RTChecks(RTChecks), Plan(Plan),
VectorPHVPBB(cast<VPBasicBlock>(
Plan.getVectorLoopRegion()->getSinglePredecessor())) {}
@@ -606,9 +605,6 @@ class InnerLoopVectorizer {
// --- Vectorization state ---
- /// The profitablity analysis.
- LoopVectorizationCostModel *Cost;
-
/// Structure to hold information about generated runtime checks, responsible
/// for cleaning the checks, if vectorization turns out unprofitable.
GeneratedRTChecks &RTChecks;
@@ -657,11 +653,10 @@ class InnerLoopAndEpilogueVectorizer : public InnerLoopVectorizer {
const TargetTransformInfo *TTI,
AssumptionCache *AC,
EpilogueLoopVectorizationInfo &EPI,
- LoopVectorizationCostModel *CM,
GeneratedRTChecks &Checks, VPlan &Plan,
ElementCount VecWidth, unsigned UnrollFactor)
: InnerLoopVectorizer(OrigLoop, PSE, LI, DT, TTI, AC, VecWidth,
- UnrollFactor, CM, Checks, Plan),
+ UnrollFactor, Checks, Plan),
EPI(EPI) {}
/// Holds and updates state information required to vectorize the main loop
@@ -683,9 +678,8 @@ class EpilogueVectorizerMainLoop : public InnerLoopAndEpilogueVectorizer {
const TargetTransformInfo *TTI,
AssumptionCache *AC,
EpilogueLoopVectorizationInfo &EPI,
- LoopVectorizationCostModel *CM,
GeneratedRTChecks &Check, VPlan &Plan)
- : InnerLoopAndEpilogueVectorizer(OrigLoop, PSE, LI, DT, TTI, AC, EPI, CM,
+ : InnerLoopAndEpilogueVectorizer(OrigLoop, PSE, LI, DT, TTI, AC, EPI,
Check, Plan, EPI.MainLoopVF,
EPI.MainLoopUF) {}
@@ -704,9 +698,8 @@ class EpilogueVectorizerEpilogueLoop : public InnerLoopAndEpilogueVectorizer {
const TargetTransformInfo *TTI,
AssumptionCache *AC,
EpilogueLoopVectorizationInfo &EPI,
- LoopVectorizationCostModel *CM,
GeneratedRTChecks &Checks, VPlan &Plan)
- : InnerLoopAndEpilogueVectorizer(OrigLoop, PSE, LI, DT, TTI, AC, EPI, CM,
+ : InnerLoopAndEpilogueVectorizer(OrigLoop, PSE, LI, DT, TTI, AC, EPI,
Checks, Plan, EPI.EpilogueVF,
EPI.EpilogueUF) {}
/// Implements the interface for creating a vectorized skeleton using the
@@ -8295,8 +8288,8 @@ bool LoopVectorizePass::processLoop(Loop *L) {
L->getLoopPredecessor()->getTerminator()->getDebugLoc(),
PSE);
- EpilogueVectorizerMainLoop MainILV(L, PSE, LI, DT, TTI, AC, EPI, &CM,
- Checks, BestMainPlan);
+ EpilogueVectorizerMainLoop MainILV(L, PSE, LI, DT, TTI, AC, EPI, Checks,
+ BestMainPlan);
auto ExpandedSCEVs = LVP.executePlan(
EPI.MainLoopVF, EPI.MainLoopUF, BestMainPlan, MainILV, DT,
LoopVectorizationPlanner::EpilogueVectorizationKind::MainLoop);
@@ -8322,7 +8315,7 @@ bool LoopVectorizePass::processLoop(Loop *L) {
// Second pass vectorizes the epilogue and adjusts the control flow
// edges from the first pass.
- EpilogueVectorizerEpilogueLoop EpilogILV(L, PSE, LI, DT, TTI, AC, EPI, &CM,
+ EpilogueVectorizerEpilogueLoop EpilogILV(L, PSE, LI, DT, TTI, AC, EPI,
Checks, BestEpiPlan);
SmallVector<Instruction *> InstsToMove = preparePlanForEpilogueVectorLoop(
BestMainPlan, BestEpiPlan, L, ExpandedSCEVs, EPI, LVP, Config,
@@ -8335,7 +8328,7 @@ bool LoopVectorizePass::processLoop(Loop *L) {
ResumeValues);
++LoopsEpilogueVectorized;
} else {
- InnerLoopVectorizer LB(L, PSE, LI, DT, TTI, AC, VF.Width, IC, &CM, Checks,
+ InnerLoopVectorizer LB(L, PSE, LI, DT, TTI, AC, VF.Width, IC, Checks,
BestPlan);
LVP.addMinimumIterationCheck(BestPlan, VF.Width, IC,
VF.MinProfitableTripCount);
More information about the llvm-commits
mailing list