[llvm] [LAA][NFCI] Re-use hasComputableBounds in findForkedPointer and refactor createCheckForAccess (PR #112571)
David Sherwood via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 17 08:12:06 PDT 2024
================
@@ -1067,30 +1065,26 @@ bool AccessAnalysis::createCheckForAccess(RuntimePointerChecking &RtCheck,
SmallVector<PointerIntPair<const SCEV *, 1, bool>> TranslatedPtrs =
findForkedPointer(PSE, StridesMap, Ptr, TheLoop);
- for (const auto &P : TranslatedPtrs) {
- const SCEV *PtrExpr = get<0>(P);
- if (!hasComputableBounds(PSE, Ptr, PtrExpr, TheLoop, Assume))
+ if (TranslatedPtrs.size() == 1) {
+ auto &TranslatedPtr = TranslatedPtrs.front();
+ if (!hasComputableBounds(PSE, Ptr, get<0>(TranslatedPtr), TheLoop, Assume))
return false;
// When we run after a failing dependency check we have to make sure
// we don't have wrapping pointers.
- if (ShouldCheckWrap) {
- // Skip wrap checking when translating pointers.
- if (TranslatedPtrs.size() > 1)
+ if (ShouldCheckWrap && !isNoWrap(PSE, StridesMap, Ptr, AccessTy, TheLoop)) {
+ const SCEV *Expr = PSE.getSCEV(Ptr);
+ if (!Assume || !isa<SCEVAddRecExpr>(Expr))
return false;
-
- if (!isNoWrap(PSE, StridesMap, Ptr, AccessTy, TheLoop)) {
- const SCEV *Expr = PSE.getSCEV(Ptr);
- if (!Assume || !isa<SCEVAddRecExpr>(Expr))
- return false;
- PSE.setNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW);
- }
+ PSE.setNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW);
}
// If there's only one option for Ptr, look it up after bounds and wrap
// checking, because assumptions might have been added to PSE.
- if (TranslatedPtrs.size() == 1)
- TranslatedPtrs[0] = {replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr),
- false};
+ TranslatedPtr = {replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr), false};
+ } else {
+ // Skip wrap checking when translating pointers.
----------------
david-arm wrote:
nit: I think you can fold the else and if together:
```
} else if (ShouldCheckWrap) {
// Skip wrap checking when translating pointers.
return false;
}
```
https://github.com/llvm/llvm-project/pull/112571
More information about the llvm-commits
mailing list