[llvm] [DA] Refactor the signature of the Exact RDIV test (NFCI) (PR #189535)

Ryotaro Kasuga via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 31 00:07:41 PDT 2026


================
@@ -2095,26 +2106,16 @@ bool DependenceInfo::testSIV(const SCEV *Src, const SCEV *Dst, unsigned &Level,
 // Return true if dependence disproved.
 bool DependenceInfo::testRDIV(const SCEV *Src, const SCEV *Dst,
                               FullDependence &Result) const {
-  const SCEV *SrcConst, *DstConst;
-  const SCEV *SrcCoeff, *DstCoeff;
-  const Loop *SrcLoop, *DstLoop;
-
   LLVM_DEBUG(dbgs() << "    src = " << *Src << "\n");
   LLVM_DEBUG(dbgs() << "    dst = " << *Dst << "\n");
   const SCEVAddRecExpr *SrcAddRec = dyn_cast<SCEVAddRecExpr>(Src);
   const SCEVAddRecExpr *DstAddRec = dyn_cast<SCEVAddRecExpr>(Dst);
-  if (SrcAddRec && DstAddRec) {
-    SrcConst = SrcAddRec->getStart();
-    SrcCoeff = SrcAddRec->getStepRecurrence(*SE);
-    SrcLoop = SrcAddRec->getLoop();
-    DstConst = DstAddRec->getStart();
-    DstCoeff = DstAddRec->getStepRecurrence(*SE);
-    DstLoop = DstAddRec->getLoop();
-  } else
+  bool disproven = false;
+  if (SrcAddRec && DstAddRec)
+    disproven = exactRDIVtest(SrcAddRec, DstAddRec, Result);
+  else
     llvm_unreachable("RDIV expected at least one AddRec");
-  return exactRDIVtest(SrcCoeff, DstCoeff, SrcConst, DstConst, SrcLoop, DstLoop,
-                       Result) ||
-         gcdMIVtest(Src, Dst, Result);
+  return disproven || gcdMIVtest(Src, Dst, Result);
----------------
kasuga-fj wrote:

```suggestion
  assert(SrcAddRec && DstAddRec && "Unexpected non-addrec input");
  return exactRDIVtest(SrcAddRec, DstAddRec, Result) || gcdMIVtest(Src, Dst, Result);
```

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


More information about the llvm-commits mailing list