aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRamkumar Ramachandra <ramkumar.ramachandra@codasip.com>2025-05-09 09:20:50 +0100
committerGitHub <noreply@github.com>2025-05-09 09:20:50 +0100
commit68dccb9fa0b09b3485acfc0d436c1d66a4089b8f (patch)
treeb2faf34826f689cc823a43901635edba3a23957c
parent458991197d252e28ce4720a0770ef7d183435eeb (diff)
downloadllvm-68dccb9fa0b09b3485acfc0d436c1d66a4089b8f.zip
llvm-68dccb9fa0b09b3485acfc0d436c1d66a4089b8f.tar.gz
llvm-68dccb9fa0b09b3485acfc0d436c1d66a4089b8f.tar.bz2
[LAA] Strip dead code in getStrideFromPointer (NFC) (#139140)
The SCEV multiply by 1 doesn't make sense, because SCEV would fold it: therefore, the OrigPtr == Ptr branch effectively rejects a multiply. However, in this branch, we have a pointer SCEV that cannot be a multiply, and hence the code the code is dead. Strip it.
-rw-r--r--llvm/lib/Analysis/LoopAccessAnalysis.cpp17
1 files changed, 0 insertions, 17 deletions
diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
index 535b71c..438669d 100644
--- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp
+++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
@@ -2861,23 +2861,6 @@ static const SCEV *getStrideFromPointer(Value *Ptr, ScalarEvolution *SE, Loop *L
V = S->getStepRecurrence(*SE);
- // Strip off the size of access multiplication if we are still analyzing the
- // pointer.
- if (OrigPtr == Ptr) {
- if (auto *M = dyn_cast<SCEVMulExpr>(V)) {
- auto *StepConst = dyn_cast<SCEVConstant>(M->getOperand(0));
- if (!StepConst)
- return nullptr;
-
- auto StepVal = StepConst->getAPInt().trySExtValue();
- // Bail out on a non-unit pointer access size.
- if (!StepVal || StepVal != 1)
- return nullptr;
-
- V = M->getOperand(1);
- }
- }
-
// Note that the restriction after this loop invariant check are only
// profitability restrictions.
if (!SE->isLoopInvariant(V, Lp))