[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