diff options
author | Ramkumar Ramachandra <ramkumar.ramachandra@codasip.com> | 2025-05-09 09:20:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-09 09:20:50 +0100 |
commit | 68dccb9fa0b09b3485acfc0d436c1d66a4089b8f (patch) | |
tree | b2faf34826f689cc823a43901635edba3a23957c | |
parent | 458991197d252e28ce4720a0770ef7d183435eeb (diff) | |
download | llvm-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.cpp | 17 |
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)) |