[llvm] LAA: be less conservative in isNoWrap (PR #112553)
Ramkumar Ramachandra via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 21 01:59:35 PDT 2024
================
@@ -825,14 +825,13 @@ static bool hasComputableBounds(PredicatedScalarEvolution &PSE, Value *Ptr,
/// Check whether a pointer address cannot wrap.
static bool isNoWrap(PredicatedScalarEvolution &PSE,
- const DenseMap<Value *, const SCEV *> &Strides, Value *Ptr, Type *AccessTy,
- Loop *L) {
+ const DenseMap<Value *, const SCEV *> &Strides, Value *Ptr,
+ Type *AccessTy, Loop *L, bool Assume) {
const SCEV *PtrScev = PSE.getSCEV(Ptr);
if (PSE.getSE()->isLoopInvariant(PtrScev, L))
return true;
- int64_t Stride = getPtrStride(PSE, AccessTy, Ptr, L, Strides).value_or(0);
- return Stride == 1 ||
+ return getPtrStride(PSE, AccessTy, Ptr, L, Strides, Assume).has_value() ||
----------------
artagnon wrote:
Hi, doesn't `ShouldCheckWrap` take the default value of `true` if nothing is passed?
```cpp
std::optional<int64_t>
getPtrStride(PredicatedScalarEvolution &PSE, Type *AccessTy, Value *Ptr,
const Loop *Lp,
const DenseMap<Value *, const SCEV *> &StridesMap = DenseMap<Value *, const SCEV *>(),
bool Assume = false, bool ShouldCheckWrap = true);
```
https://github.com/llvm/llvm-project/pull/112553
More information about the llvm-commits
mailing list