[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