[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