[llvm] change contents of ScalarEvolution from private to protected (PR #83052)
Joshua Ferguson via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 7 07:50:16 PST 2024
================
@@ -8947,37 +9067,39 @@ ScalarEvolution::ExitLimit ScalarEvolution::computeExitLimitFromCondImpl(
// preserve the CFG and is temporarily leaving constant conditions
// in place.
if (ConstantInt *CI = dyn_cast<ConstantInt>(ExitCond)) {
- if (ExitIfTrue == !CI->getZExtValue())
+ if (ExitIfTrue == !CI->getZExtValue()) {
// The backedge is always taken.
return getCouldNotCompute();
+ }
// The backedge is never taken.
return getZero(CI->getType());
}
- // If we're exiting based on the overflow flag of an x.with.overflow intrinsic
- // with a constant step, we can form an equivalent icmp predicate and figure
- // out how many iterations will be taken before we exit.
- const WithOverflowInst *WO;
- const APInt *C;
- if (match(ExitCond, m_ExtractValue<1>(m_WithOverflowInst(WO))) &&
- match(WO->getRHS(), m_APInt(C))) {
- ConstantRange NWR =
- ConstantRange::makeExactNoWrapRegion(WO->getBinaryOp(), *C,
- WO->getNoWrapKind());
- CmpInst::Predicate Pred;
- APInt NewRHSC, Offset;
- NWR.getEquivalentICmp(Pred, NewRHSC, Offset);
- if (!ExitIfTrue)
- Pred = ICmpInst::getInversePredicate(Pred);
- auto *LHS = getSCEV(WO->getLHS());
- if (Offset != 0)
- LHS = getAddExpr(LHS, getConstant(Offset));
- auto EL = computeExitLimitFromICmp(L, Pred, LHS, getConstant(NewRHSC),
- ControlsOnlyExit, AllowPredicates);
- if (EL.hasAnyInfo())
- return EL;
+ // block was never executed in MustExitScalarEvolution code
----------------
skewballfox wrote:
I just pushed changes for dropping this condition and the other one you suggested below
https://github.com/llvm/llvm-project/pull/83052
More information about the llvm-commits
mailing list