[llvm] 721fdf1 - [LoopUnrollAnalyzer] Store SimplifiedAddress offset as APInt (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 27 06:49:38 PDT 2024


Author: Nikita Popov
Date: 2024-08-27T15:49:28+02:00
New Revision: 721fdf1c9a73269280a504cbba847f4979512b66

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

LOG: [LoopUnrollAnalyzer] Store SimplifiedAddress offset as APInt (NFC)

Added: 
    

Modified: 
    llvm/include/llvm/Analysis/LoopUnrollAnalyzer.h
    llvm/lib/Analysis/LoopUnrollAnalyzer.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/Analysis/LoopUnrollAnalyzer.h b/llvm/include/llvm/Analysis/LoopUnrollAnalyzer.h
index eada6a647763ba..12b906ec9dd585 100644
--- a/llvm/include/llvm/Analysis/LoopUnrollAnalyzer.h
+++ b/llvm/include/llvm/Analysis/LoopUnrollAnalyzer.h
@@ -44,7 +44,7 @@ class UnrolledInstAnalyzer : private InstVisitor<UnrolledInstAnalyzer, bool> {
   friend class InstVisitor<UnrolledInstAnalyzer, bool>;
   struct SimplifiedAddress {
     Value *Base = nullptr;
-    ConstantInt *Offset = nullptr;
+    APInt Offset;
   };
 
 public:

diff  --git a/llvm/lib/Analysis/LoopUnrollAnalyzer.cpp b/llvm/lib/Analysis/LoopUnrollAnalyzer.cpp
index 7b6ca4d711fcda..34fbab6a11d6d1 100644
--- a/llvm/lib/Analysis/LoopUnrollAnalyzer.cpp
+++ b/llvm/lib/Analysis/LoopUnrollAnalyzer.cpp
@@ -64,7 +64,7 @@ bool UnrolledInstAnalyzer::simplifyInstWithSCEV(Instruction *I) {
     return false;
   SimplifiedAddress Address;
   Address.Base = Base->getValue();
-  Address.Offset = Offset->getValue();
+  Address.Offset = Offset->getAPInt();
   SimplifiedAddresses[I] = Address;
   return false;
 }
@@ -105,7 +105,7 @@ bool UnrolledInstAnalyzer::visitLoad(LoadInst &I) {
   auto AddressIt = SimplifiedAddresses.find(AddrOp);
   if (AddressIt == SimplifiedAddresses.end())
     return false;
-  ConstantInt *SimplifiedAddrOp = AddressIt->second.Offset;
+  const APInt &SimplifiedAddrOp = AddressIt->second.Offset;
 
   auto *GV = dyn_cast<GlobalVariable>(AddressIt->second.Base);
   // We're only interested in loads that can be completely folded to a
@@ -125,9 +125,9 @@ bool UnrolledInstAnalyzer::visitLoad(LoadInst &I) {
     return false;
 
   unsigned ElemSize = CDS->getElementType()->getPrimitiveSizeInBits() / 8U;
-  if (SimplifiedAddrOp->getValue().getActiveBits() > 64)
+  if (SimplifiedAddrOp.getActiveBits() > 64)
     return false;
-  int64_t SimplifiedAddrOpV = SimplifiedAddrOp->getSExtValue();
+  int64_t SimplifiedAddrOpV = SimplifiedAddrOp.getSExtValue();
   if (SimplifiedAddrOpV < 0) {
     // FIXME: For now we conservatively ignore out of bound accesses, but
     // we're allowed to perform the optimization in this case.
@@ -186,10 +186,9 @@ bool UnrolledInstAnalyzer::visitCmpInst(CmpInst &I) {
       if (SimplifiedRHS != SimplifiedAddresses.end()) {
         SimplifiedAddress &LHSAddr = SimplifiedLHS->second;
         SimplifiedAddress &RHSAddr = SimplifiedRHS->second;
-        if (LHSAddr.Base == RHSAddr.Base) {
-          LHS = LHSAddr.Offset;
-          RHS = RHSAddr.Offset;
-        }
+        if (LHSAddr.Base == RHSAddr.Base)
+          return ICmpInst::compare(LHSAddr.Offset, RHSAddr.Offset,
+                                   I.getPredicate());
       }
     }
   }


        


More information about the llvm-commits mailing list