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 8775 of file ScalarEvolution.cpp.
ScalarEvolution::ExitLimit::ExitLimit | ( | const SCEV * | E, |
const SCEV * | ConstantMaxNotTaken, | ||
const SCEV * | SymbolicMaxNotTaken, | ||
bool | MaxOrZero, | ||
ArrayRef< ArrayRef< const SCEVPredicate * > > | PredLists = {} |
||
) |
Definition at line 8778 of file ScalarEvolution.cpp.
References assert(), ConstantMaxNotTaken, llvm::SmallPtrSetImpl< PtrType >::contains(), ExactNotTaken, llvm::SCEV::getType(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::Type::isPointerTy(), llvm::SCEV::isZero(), 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 8820 of file ScalarEvolution.cpp.
|
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, and ExactNotTaken.
|
inline |
Test whether this ExitLimit contains all information.
Definition at line 1183 of file ScalarEvolution.h.
References ExactNotTaken.
Definition at line 1149 of file ScalarEvolution.h.
Referenced by 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.
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().