[llvm] [Loads] Support dereferenceable assumption with variable size. (PR #128436)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 3 11:51:11 PDT 2025
================
@@ -365,12 +375,20 @@ bool llvm::isDereferenceableAndAlignedInLoop(
return false;
AccessSize = MaxPtrDiff + Offset->getAPInt();
+ AccessSizeSCEV = SE.getAddExpr(PtrDiff, Offset);
Base = NewBase->getValue();
} else
return false;
Instruction *HeaderFirstNonPHI = &*L->getHeader()->getFirstNonPHIIt();
- return isDereferenceableAndAlignedPointer(Base, Alignment, AccessSize, DL,
+ return isDereferenceableAndAlignedPointerViaAssumption(
+ Base, Alignment,
+ [&SE, AccessSizeSCEV](const RetainedKnowledge &RK) {
+ return SE.isKnownPredicate(CmpInst::ICMP_ULE, AccessSizeSCEV,
----------------
fhahn wrote:
Yep, there's probably a number of improvements we can make as follow ups!
https://github.com/llvm/llvm-project/pull/128436
More information about the llvm-commits
mailing list