Loading llvm/lib/Analysis/LoopAccessAnalysis.cpp +17 −17 Original line number Diff line number Diff line Loading @@ -1414,19 +1414,19 @@ std::optional<int64_t> llvm::getPtrStride(PredicatedScalarEvolution &PSE, isNoWrapAddRec(Ptr, AR, PSE, Lp); if (!IsNoWrapAddRec && !IsInBoundsGEP && NullPointerIsDefined(Lp->getHeader()->getParent(), AddrSpace)) { if (Assume) { if (!Assume) { LLVM_DEBUG( dbgs() << "LAA: Bad stride - Pointer may wrap in the address space " << *Ptr << " SCEV: " << *AR << "\n"); return std::nullopt; } PSE.setNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW); IsNoWrapAddRec = true; LLVM_DEBUG(dbgs() << "LAA: Pointer may wrap in the address space:\n" << "LAA: Pointer: " << *Ptr << "\n" << "LAA: SCEV: " << *AR << "\n" << "LAA: Added an overflow assumption\n"); } else { LLVM_DEBUG( dbgs() << "LAA: Bad stride - Pointer may wrap in the address space " << *Ptr << " SCEV: " << *AR << "\n"); return std::nullopt; } } // Check the step is constant. Loading Loading @@ -1463,7 +1463,9 @@ std::optional<int64_t> llvm::getPtrStride(PredicatedScalarEvolution &PSE, if (!IsNoWrapAddRec && Stride != 1 && Stride != -1 && (IsInBoundsGEP || !NullPointerIsDefined(Lp->getHeader()->getParent(), AddrSpace))) { if (Assume) { if (!Assume) return std::nullopt; // We can avoid this case by adding a run-time check. LLVM_DEBUG(dbgs() << "LAA: Non unit strided pointer which is not either " << "inbounds or in address space 0 may wrap:\n" Loading @@ -1471,8 +1473,6 @@ std::optional<int64_t> llvm::getPtrStride(PredicatedScalarEvolution &PSE, << "LAA: SCEV: " << *AR << "\n" << "LAA: Added an overflow assumption\n"); PSE.setNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW); } else return std::nullopt; } return Stride; Loading Loading
llvm/lib/Analysis/LoopAccessAnalysis.cpp +17 −17 Original line number Diff line number Diff line Loading @@ -1414,19 +1414,19 @@ std::optional<int64_t> llvm::getPtrStride(PredicatedScalarEvolution &PSE, isNoWrapAddRec(Ptr, AR, PSE, Lp); if (!IsNoWrapAddRec && !IsInBoundsGEP && NullPointerIsDefined(Lp->getHeader()->getParent(), AddrSpace)) { if (Assume) { if (!Assume) { LLVM_DEBUG( dbgs() << "LAA: Bad stride - Pointer may wrap in the address space " << *Ptr << " SCEV: " << *AR << "\n"); return std::nullopt; } PSE.setNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW); IsNoWrapAddRec = true; LLVM_DEBUG(dbgs() << "LAA: Pointer may wrap in the address space:\n" << "LAA: Pointer: " << *Ptr << "\n" << "LAA: SCEV: " << *AR << "\n" << "LAA: Added an overflow assumption\n"); } else { LLVM_DEBUG( dbgs() << "LAA: Bad stride - Pointer may wrap in the address space " << *Ptr << " SCEV: " << *AR << "\n"); return std::nullopt; } } // Check the step is constant. Loading Loading @@ -1463,7 +1463,9 @@ std::optional<int64_t> llvm::getPtrStride(PredicatedScalarEvolution &PSE, if (!IsNoWrapAddRec && Stride != 1 && Stride != -1 && (IsInBoundsGEP || !NullPointerIsDefined(Lp->getHeader()->getParent(), AddrSpace))) { if (Assume) { if (!Assume) return std::nullopt; // We can avoid this case by adding a run-time check. LLVM_DEBUG(dbgs() << "LAA: Non unit strided pointer which is not either " << "inbounds or in address space 0 may wrap:\n" Loading @@ -1471,8 +1473,6 @@ std::optional<int64_t> llvm::getPtrStride(PredicatedScalarEvolution &PSE, << "LAA: SCEV: " << *AR << "\n" << "LAA: Added an overflow assumption\n"); PSE.setNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW); } else return std::nullopt; } return Stride; Loading