|
LLVM 22.0.0git
|
#include "llvm/Analysis/ScalarEvolution.h"
Public Member Functions | |
| LLVM_ABI const SCEV * | rewrite (const SCEV *Expr) const |
Try to apply the collected loop guards to Expr. | |
Static Public Member Functions | |
| static LLVM_ABI LoopGuards | collect (const Loop *L, ScalarEvolution &SE) |
Collect rewrite map for loop guards for loop L, together with flags indicating if NUW and NSW can be preserved during rewriting. | |
Definition at line 1350 of file ScalarEvolution.h.
|
static |
Collect rewrite map for loop guards for loop L, together with flags indicating if NUW and NSW can be preserved during rewriting.
Definition at line 15401 of file ScalarEvolution.cpp.
References llvm::ScalarEvolution::ScalarEvolution().
Referenced by llvm::ScalarEvolution::applyLoopGuards(), evaluatePtrAddRecAtMaxBTCWillNotWrap(), llvm::isDereferenceableAndAlignedInLoop(), and shouldPeelLastIteration().
Try to apply the collected loop guards to Expr.
A rewriter to replace SCEV expressions in Map with the corresponding entry in the map. It skips AddRecExpr because we cannot guarantee that the replacement is loop invariant in the loop of the AddRec.
Definition at line 15939 of file ScalarEvolution.cpp.
References llvm::Add, llvm::SmallVectorTemplateCommon< T, typename >::back(), Changed, llvm::SCEV::FlagAnyWrap, llvm::SCEV::FlagNSW, llvm::SCEV::FlagNUW, llvm::IntegerType::get(), getNextSCEVDivisibleByDivisor(), llvm::SCEVNAryExpr::getNoWrapFlags(), llvm::SCEVNAryExpr::getNumOperands(), llvm::SCEVCastExpr::getOperand(), llvm::SCEVNAryExpr::getOperand(), llvm::SCEV::getType(), llvm::SCEVCastExpr::getType(), llvm::isa(), llvm::ScalarEvolution::maskFlags(), MatchBinarySub(), llvm::SCEVNAryExpr::operands(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Rewriter, llvm::ScalarEvolution::ScalarEvolution(), llvm::ScalarEvolution::SCEVUnknown, llvm::ScalarEvolution::setFlags(), std::swap(), llvm::SCEVRewriteVisitor< SC >::visit(), llvm::SCEVRewriteVisitor< SC >::visitSignExtendExpr(), llvm::SCEVRewriteVisitor< SC >::visitSMinExpr(), llvm::SCEVRewriteVisitor< SC >::visitUMinExpr(), and llvm::SCEVRewriteVisitor< SC >::visitZeroExtendExpr().
Referenced by llvm::ScalarEvolution::applyLoopGuards().