[llvm] e60de25 - [LAA] Replace symbolic strides for translated pointers earlier (NFC).

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Sat Feb 15 10:44:58 PST 2025


Author: Florian Hahn
Date: 2025-02-15T19:44:39+01:00
New Revision: e60de25c4e9a6d59b7fd868e803cfe3cd77d4078

URL: https://github.com/llvm/llvm-project/commit/e60de25c4e9a6d59b7fd868e803cfe3cd77d4078
DIFF: https://github.com/llvm/llvm-project/commit/e60de25c4e9a6d59b7fd868e803cfe3cd77d4078.diff

LOG: [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.

Added: 
    

Modified: 
    llvm/lib/Analysis/LoopAccessAnalysis.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
index e5b87d2d16230..43380b59ac49f 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) {


        


More information about the llvm-commits mailing list