LLVM 20.0.0git
|
#include "llvm/Analysis/IVUsers.h"
Public Types | |
typedef ilist< IVStrideUse >::iterator | iterator |
typedef ilist< IVStrideUse >::const_iterator | const_iterator |
Friends | |
class | IVStrideUse |
typedef ilist<IVStrideUse>::iterator llvm::IVUsers::iterator |
IVUsers::IVUsers | ( | Loop * | L, |
AssumptionCache * | AC, | ||
LoopInfo * | LI, | ||
DominatorTree * | DT, | ||
ScalarEvolution * | SE | ||
) |
Definition at line 251 of file IVUsers.cpp.
References AddUsersIfInteresting(), llvm::CodeMetrics::collectEphemeralValues(), and I.
IVStrideUse & IVUsers::AddUser | ( | Instruction * | User, |
Value * | Operand | ||
) |
Definition at line 246 of file IVUsers.cpp.
References IVStrideUse.
Referenced by AddUsersIfInteresting().
bool IVUsers::AddUsersIfInteresting | ( | Instruction * | I | ) |
AddUsersIfInteresting - Inspect the specified Instruction.
Inspect the specified instruction.
If it is a reducible SCEV, recursively add its users to the IVUsesByStride set and return true. Otherwise, return false.
Definition at line 136 of file IVUsers.cpp.
References AddUser(), AddUsersIfInteresting(), llvm::dbgs(), llvm::denormalizeForPostIncUse(), DL, llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::ScalarEvolution::getSCEV(), llvm::ScalarEvolution::getTypeSizeInBits(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), isInteresting(), llvm::isSafeToSpeculativelyExecute(), llvm::ScalarEvolution::isSCEVable(), IVUseShouldUsePostIncValue(), LLVM_DEBUG, and llvm::normalizeForPostIncUseIf().
Referenced by AddUsersIfInteresting(), and IVUsers().
|
inline |
LLVM_DUMP_METHOD void IVUsers::dump | ( | ) | const |
dump - This method is used for debugging.
Definition at line 292 of file IVUsers.cpp.
References llvm::dbgs(), and print().
|
inline |
const SCEV * IVUsers::getExpr | ( | const IVStrideUse & | IU | ) | const |
getExpr - Return the expression for the use.
Returns nullptr if the result is not invertible.
Definition at line 336 of file IVUsers.cpp.
References llvm::IVStrideUse::getPostIncLoops(), getReplacementExpr(), and llvm::normalizeForPostIncUse().
Referenced by getStride().
const SCEV * IVUsers::getReplacementExpr | ( | const IVStrideUse & | IU | ) | const |
getReplacementExpr - Return a SCEV expression which computes the value of the OperandValToReplace of the given IVStrideUse.
getReplacementExpr - Return a SCEV expression which computes the value of the OperandValToReplace.
Definition at line 331 of file IVUsers.cpp.
References llvm::IVStrideUse::getOperandValToReplace(), and llvm::ScalarEvolution::getSCEV().
Definition at line 358 of file IVUsers.cpp.
References findAddRecForLoop(), and getExpr().
|
inline |
Definition at line 149 of file IVUsers.h.
References llvm::SmallPtrSetImpl< PtrType >::count().
void IVUsers::print | ( | raw_ostream & | OS, |
const Module * | M = nullptr |
||
) | const |
Definition at line 265 of file IVUsers.cpp.
References llvm::ScalarEvolution::getBackedgeTakenCount(), llvm::LoopBase< BlockT, LoopT >::getHeader(), getReplacementExpr(), llvm::ScalarEvolution::hasLoopInvariantBackedgeTakenCount(), OS, and llvm::Value::printAsOperand().
Referenced by dump().
void IVUsers::releaseMemory | ( | ) |
Definition at line 295 of file IVUsers.cpp.
|
friend |