diff options
Diffstat (limited to 'llvm/lib/Analysis/LoopAccessAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/LoopAccessAnalysis.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp index e5b87d2..43380b5 100644 --- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp +++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp @@ -1147,6 +1147,11 @@ bool AccessAnalysis::createCheckForAccess(RuntimePointerChecking &RtCheck, if (!hasComputableBounds(PSE, Ptr, P.getPointer(), TheLoop, Assume)) return false; + // 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) + P.setPointer(replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr)); + // When we run after a failing dependency check we have to make sure // we don't have wrapping pointers. if (ShouldCheckWrap) { @@ -1157,10 +1162,6 @@ bool AccessAnalysis::createCheckForAccess(RuntimePointerChecking &RtCheck, if (!isNoWrap(PSE, StridesMap, Ptr, AccessTy, TheLoop, Assume)) return false; } - // 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) - P.setPointer(replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr)); } for (auto [PtrExpr, NeedsFreeze] : TranslatedPtrs) { |