LLVM 22.0.0git
|
Information about the number of loop iterations for which a loop exit's branch condition evaluates to the not-taken path. More...
#include "llvm/Analysis/ScalarEvolution.h"
Public Member Functions | |
LLVM_ABI | ExitLimit (const SCEV *E) |
Construct either an exact exit limit from a constant, or an unknown one from a SCEVCouldNotCompute. | |
LLVM_ABI | ExitLimit (const SCEV *E, const SCEV *ConstantMaxNotTaken, const SCEV *SymbolicMaxNotTaken, bool MaxOrZero, ArrayRef< ArrayRef< const SCEVPredicate * > > PredLists={}) |
LLVM_ABI | ExitLimit (const SCEV *E, const SCEV *ConstantMaxNotTaken, const SCEV *SymbolicMaxNotTaken, bool MaxOrZero, ArrayRef< const SCEVPredicate * > PredList) |
bool | hasAnyInfo () const |
Test whether this ExitLimit contains any computed information, or whether it's all SCEVCouldNotCompute values. | |
bool | hasFullInfo () const |
Test whether this ExitLimit contains all information. |
Public Attributes | |
const SCEV * | ExactNotTaken |
const SCEV * | ConstantMaxNotTaken |
const SCEV * | SymbolicMaxNotTaken |
bool | MaxOrZero = false |
SmallVector< const SCEVPredicate *, 4 > | Predicates |
A vector of predicate guards for this ExitLimit. |
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.
Definition at line 1147 of file ScalarEvolution.h.
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.
Definition at line 8783 of file ScalarEvolution.cpp.
References ExitLimit().
Referenced by ExitLimit(), and ExitLimit().
ScalarEvolution::ExitLimit::ExitLimit | ( | const SCEV * | E, |
const SCEV * | ConstantMaxNotTaken, | ||
const SCEV * | SymbolicMaxNotTaken, | ||
bool | MaxOrZero, | ||
ArrayRef< ArrayRef< const SCEVPredicate * > > | PredLists = {} ) |
Definition at line 8786 of file ScalarEvolution.cpp.
References assert(), ConstantMaxNotTaken, llvm::SmallPtrSetImpl< PtrType >::contains(), ExactNotTaken, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::isa(), MaxOrZero, P, Predicates, and SymbolicMaxNotTaken.
ScalarEvolution::ExitLimit::ExitLimit | ( | const SCEV * | E, |
const SCEV * | ConstantMaxNotTaken, | ||
const SCEV * | SymbolicMaxNotTaken, | ||
bool | MaxOrZero, | ||
ArrayRef< const SCEVPredicate * > | PredList ) |
Definition at line 8828 of file ScalarEvolution.cpp.
References ConstantMaxNotTaken, ExitLimit(), MaxOrZero, and SymbolicMaxNotTaken.
|
inline |
Test whether this ExitLimit contains any computed information, or whether it's all SCEVCouldNotCompute values.
Definition at line 1177 of file ScalarEvolution.h.
References ConstantMaxNotTaken, ExactNotTaken, and llvm::isa().
|
inline |
Test whether this ExitLimit contains all information.
Definition at line 1183 of file ScalarEvolution.h.
References ExactNotTaken, and llvm::isa().
Definition at line 1149 of file ScalarEvolution.h.
Referenced by ExitLimit(), ExitLimit(), and hasAnyInfo().
Definition at line 1148 of file ScalarEvolution.h.
Referenced by ExitLimit(), hasAnyInfo(), and hasFullInfo().
bool llvm::ScalarEvolution::ExitLimit::MaxOrZero = false |
Definition at line 1154 of file ScalarEvolution.h.
Referenced by ExitLimit(), and ExitLimit().
SmallVector<const SCEVPredicate *, 4> llvm::ScalarEvolution::ExitLimit::Predicates |
A vector of predicate guards for this ExitLimit.
The result is only valid if all of the predicates in Predicates
evaluate to 'true' at run-time.
Definition at line 1159 of file ScalarEvolution.h.
Referenced by ExitLimit().
Definition at line 1151 of file ScalarEvolution.h.
Referenced by ExitLimit(), and ExitLimit().