[llvm] [SCEV] Infer NUW on AR in getUDivExpr (PR #217133)

Ramkumar Ramachandra via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 19 03:59:32 PDT 2026


================
@@ -3536,11 +3538,9 @@ const SCEV *ScalarEvolution::getUDivExpr(SCEVUse LHS, SCEVUse RHS) {
           // {X,+,N}/C --> {X/C,+,N/C} if safe and N/C can be folded.
           const APInt &StepInt = Step->getAPInt();
           const APInt &DivInt = RHSC->getAPInt();
-          if (!StepInt.urem(DivInt) &&
-              getZeroExtendExpr(AR, ExtTy) ==
-              getAddRecExpr(getZeroExtendExpr(AR->getStart(), ExtTy),
-                            getZeroExtendExpr(Step, ExtTy),
-                            AR->getLoop(), SCEV::FlagAnyWrap)) {
+          bool HasNUW = hasFlags(proveNoUnsignedWrapViaInduction(AR),
+                                 SCEVNoWrapFlags::FlagNUW);
----------------
artagnon wrote:

Thanks, relevant to the singular small regression I'm looking at: https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/957/changes.

https://github.com/llvm/llvm-project/pull/217133


More information about the llvm-commits mailing list