Lines Matching refs:Smallest
589 // We compute `Smallest` and `Greatest` such that [Smallest, Greatest), or
590 // [Smallest, GreatestSeen] is the range of values the induction variable
593 const SCEV *Smallest = nullptr, *Greatest = nullptr, *GreatestSeen = nullptr;
597 Smallest = Start;
599 // No overflow, because the range [Smallest, GreatestSeen] is not empty.
608 // * if `Smallest` sign-overflows we know `End` is `INT_SMAX`. Since the
610 // the loop body is actually executed with is `INT_SMIN` == `Smallest`.
613 // that case, `Clamp` will always return `Smallest` and
614 // [`Result.LowLimit`, `Result.HighLimit`) = [`Smallest`, `Smallest`)
617 Smallest = SE.getAddExpr(End, One);
622 auto Clamp = [&SE, Smallest, Greatest, IsSignedPredicate](const SCEV *S) {
624 ? SE.getSMaxExpr(Smallest, SE.getSMinExpr(Greatest, S))
625 : SE.getUMaxExpr(Smallest, SE.getUMinExpr(Greatest, S));
635 SE.isKnownPredicate(PredLE, Range.getBegin(), Smallest);