reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1688 if (AR->isAffine()) { 1689 const SCEV *Start = AR->getStart(); 1690 const SCEV *Step = AR->getStepRecurrence(*this); 1691 unsigned BitWidth = getTypeSizeInBits(AR->getType()); 1692 const Loop *L = AR->getLoop(); 1694 if (!AR->hasNoUnsignedWrap()) { 1695 auto NewFlags = proveNoWrapViaConstantRanges(AR); 1696 const_cast<SCEVAddRecExpr *>(AR)->setNoWrapFlags(NewFlags); 1701 if (AR->hasNoUnsignedWrap()) 1703 getExtendAddRecStart<SCEVZeroExtendExpr>(AR, Ty, this, Depth + 1), 1704 getZeroExtendExpr(Step, Ty, Depth + 1), L, AR->getNoWrapFlags()); 1745 const_cast<SCEVAddRecExpr *>(AR)->setNoWrapFlags(SCEV::FlagNUW); 1748 getExtendAddRecStart<SCEVZeroExtendExpr>(AR, Ty, this, 1751 AR->getNoWrapFlags()); 1764 const_cast<SCEVAddRecExpr *>(AR)->setNoWrapFlags(SCEV::FlagNW); 1767 getExtendAddRecStart<SCEVZeroExtendExpr>(AR, Ty, this, 1770 AR->getNoWrapFlags()); 1792 if (isLoopBackedgeGuardedByCond(L, ICmpInst::ICMP_ULT, AR, N) || 1793 isKnownOnEveryIteration(ICmpInst::ICMP_ULT, AR, N)) { 1796 const_cast<SCEVAddRecExpr *>(AR)->setNoWrapFlags(SCEV::FlagNUW); 1799 getExtendAddRecStart<SCEVZeroExtendExpr>(AR, Ty, this, 1802 AR->getNoWrapFlags()); 1807 if (isLoopBackedgeGuardedByCond(L, ICmpInst::ICMP_UGT, AR, N) || 1808 isKnownOnEveryIteration(ICmpInst::ICMP_UGT, AR, N)) { 1812 const_cast<SCEVAddRecExpr *>(AR)->setNoWrapFlags(SCEV::FlagNW); 1815 getExtendAddRecStart<SCEVZeroExtendExpr>(AR, Ty, this, 1818 AR->getNoWrapFlags()); 1832 getAddRecExpr(getConstant(C - D), Step, L, AR->getNoWrapFlags()); 1841 const_cast<SCEVAddRecExpr *>(AR)->setNoWrapFlags(SCEV::FlagNUW); 1843 getExtendAddRecStart<SCEVZeroExtendExpr>(AR, Ty, this, Depth + 1), 1844 getZeroExtendExpr(Step, Ty, Depth + 1), L, AR->getNoWrapFlags());