[llvm] [InferAlignment] Propagate alignment between loads/stores of the same base pointer (PR #145733)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 1 06:19:43 PDT 2025
================
@@ -58,14 +58,56 @@ bool inferAlignment(Function &F, AssumptionCache &AC, DominatorTree &DT) {
}
// Compute alignment from known bits.
+ auto InferFromKnownBits = [&](Instruction &I, Value *PtrOp) {
+ KnownBits Known = computeKnownBits(PtrOp, DL, &AC, &I, &DT);
+ unsigned TrailZ =
+ std::min(Known.countMinTrailingZeros(), +Value::MaxAlignmentExponent);
+ return Align(1ull << std::min(Known.getBitWidth() - 1, TrailZ));
+ };
+
+ // Propagate alignment between loads and stores that originate from the
+ // same base pointer.
+ DenseMap<Value *, Align> BestBasePointerAligns;
+ auto InferFromBasePointer = [&](Value *PtrOp, Align LoadStoreAlign) {
+ APInt OffsetFromBase =
+ APInt(DL.getIndexTypeSizeInBits(PtrOp->getType()), 0);
----------------
nikic wrote:
```suggestion
APInt OffsetFromBase(DL.getIndexTypeSizeInBits(PtrOp->getType()), 0);
```
https://github.com/llvm/llvm-project/pull/145733
More information about the llvm-commits
mailing list