struct ScalarEvolution::ExitLimit
Declaration
struct ScalarEvolution::ExitLimit { /* full declaration omitted */ };
Description
Information about the number of loop iterations for which a loop exit's branch condition evaluates to the not-taken path. This is a temporary pair of exact and max expressions that are eventually summarized in ExitNotTakenInfo and BackedgeTakenInfo.
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1199
Member Variables
- public const llvm::SCEV* ExactNotTaken
- public const llvm::SCEV* MaxNotTaken
- public bool MaxOrZero = false
- public SmallPtrSet<const llvm::SCEVPredicate*, 4> Predicates
- A set of predicate guards for this ExitLimit. The result is only valid if all of the predicates in \c Predicates evaluate to 'true' at run-time.
Method Overview
- public ExitLimit(const llvm::SCEV * E)
- public ExitLimit(const llvm::SCEV * E, const llvm::SCEV * M, bool MaxOrZero, ArrayRef<const SmallPtrSetImpl<const llvm::SCEVPredicate *> *> PredSetList)
- public ExitLimit(const llvm::SCEV * E, const llvm::SCEV * M, bool MaxOrZero, const SmallPtrSetImpl<const llvm::SCEVPredicate *> & PredSet)
- public ExitLimit(const llvm::SCEV * E, const llvm::SCEV * M, bool MaxOrZero)
- public void addPredicate(const llvm::SCEVPredicate * P)
- public bool hasAnyInfo() const
- public bool hasFullInfo() const
- public bool hasOperand(const llvm::SCEV * S) const
Methods
¶ExitLimit(const llvm::SCEV* E)
ExitLimit(const llvm::SCEV* E)
Description
Construct either an exact exit limit from a constant, or an unknown one from a SCEVCouldNotCompute. No other types of SCEVs are allowed as arguments and asserts enforce that internally.
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1219
Parameters
- const llvm::SCEV* E
¶ExitLimit(
const llvm::SCEV* E,
const llvm::SCEV* M,
bool MaxOrZero,
ArrayRef<const SmallPtrSetImpl<
const llvm::SCEVPredicate*>*> PredSetList)
ExitLimit(
const llvm::SCEV* E,
const llvm::SCEV* M,
bool MaxOrZero,
ArrayRef<const SmallPtrSetImpl<
const llvm::SCEVPredicate*>*> PredSetList)
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1221
Parameters
- const llvm::SCEV* E
- const llvm::SCEV* M
- bool MaxOrZero
- ArrayRef<const SmallPtrSetImpl< const llvm::SCEVPredicate*>*> PredSetList
¶ExitLimit(
const llvm::SCEV* E,
const llvm::SCEV* M,
bool MaxOrZero,
const SmallPtrSetImpl<
const llvm::SCEVPredicate*>& PredSet)
ExitLimit(
const llvm::SCEV* E,
const llvm::SCEV* M,
bool MaxOrZero,
const SmallPtrSetImpl<
const llvm::SCEVPredicate*>& PredSet)
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1225
Parameters
- const llvm::SCEV* E
- const llvm::SCEV* M
- bool MaxOrZero
- const SmallPtrSetImpl<const llvm::SCEVPredicate*>& PredSet
¶ExitLimit(const llvm::SCEV* E,
const llvm::SCEV* M,
bool MaxOrZero)
ExitLimit(const llvm::SCEV* E,
const llvm::SCEV* M,
bool MaxOrZero)
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1228
Parameters
- const llvm::SCEV* E
- const llvm::SCEV* M
- bool MaxOrZero
¶void addPredicate(const llvm::SCEVPredicate* P)
void addPredicate(const llvm::SCEVPredicate* P)
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1211
Parameters
- const llvm::SCEVPredicate* P
¶bool hasAnyInfo() const
bool hasAnyInfo() const
Description
Test whether this ExitLimit contains any computed information, or whether it's all SCEVCouldNotCompute values.
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1232
¶bool hasFullInfo() const
bool hasFullInfo() const
Description
Test whether this ExitLimit contains all information.
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1240
¶bool hasOperand(const llvm::SCEV* S) const
bool hasOperand(const llvm::SCEV* S) const
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:1237
Parameters
- const llvm::SCEV* S