diff options
author | Florian Hahn <flo@fhahn.com> | 2025-02-15 19:44:39 +0100 |
---|---|---|
committer | Florian Hahn <flo@fhahn.com> | 2025-02-15 19:44:39 +0100 |
commit | e60de25c4e9a6d59b7fd868e803cfe3cd77d4078 (patch) | |
tree | 5d2da2e32501b8dd1066a4de25752a220f99a9e8 /llvm/lib/Analysis/LoopAccessAnalysis.cpp | |
parent | 948e97a40eba6c176183e8e7aefb994681b593ea (diff) | |
download | llvm-e60de25c4e9a6d59b7fd868e803cfe3cd77d4078.zip llvm-e60de25c4e9a6d59b7fd868e803cfe3cd77d4078.tar.gz llvm-e60de25c4e9a6d59b7fd868e803cfe3cd77d4078.tar.bz2 |
[LAA] Replace symbolic strides for translated pointers earlier (NFC).
Move up replaceSymbolicStrideSCEV before isNoWrap. It needs to be called
after hasComputableBounds, as this may create an AddRec via PSE, which
replaceSymbolicStrideSCEV will look up.
This is in preparation for simplifying isNoWrap.
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) { |