LLVM API Documentation
#include <IVUsers.h>
Public Types | |
typedef ilist< IVStrideUse > ::iterator | iterator |
typedef ilist< IVStrideUse > ::const_iterator | const_iterator |
Public Member Functions | |
IVUsers () | |
Loop * | getLoop () const |
bool | AddUsersIfInteresting (Instruction *I) |
IVStrideUse & | AddUser (Instruction *User, Value *Operand) |
const SCEV * | getReplacementExpr (const IVStrideUse &IU) const |
const SCEV * | getExpr (const IVStrideUse &IU) const |
getExpr - Return the expression for the use. More... | |
const SCEV * | getStride (const IVStrideUse &IU, const Loop *L) const |
iterator | begin () |
iterator | end () |
const_iterator | begin () const |
const_iterator | end () const |
bool | empty () const |
bool | isIVUserOrOperand (Instruction *Inst) const |
void | print (raw_ostream &OS, const Module *=0) const |
void | dump () const |
dump - This method is used for debugging. More... | |
![]() | |
LoopPass (char &pid) | |
Pass * | createPrinterPass (raw_ostream &O, const std::string &Banner) const |
virtual bool | doInitialization (Loop *L, LPPassManager &LPM) |
virtual bool | doFinalization () |
void | preparePassManager (PMStack &PMS) |
Check if available pass managers are suitable for this pass or not. More... | |
virtual void | assignPassManager (PMStack &PMS, PassManagerType PMT) |
Assign pass manager to manage this pass. More... | |
virtual PassManagerType | getPotentialPassManagerType () const |
Return what kind of Pass Manager can manage this pass. More... | |
virtual void | cloneBasicBlockAnalysis (BasicBlock *F, BasicBlock *T, Loop *L) |
virtual void | deleteAnalysisValue (Value *V, Loop *L) |
deleteAnalysisValue - Delete analysis info associated with value V. More... | |
![]() | |
Pass (PassKind K, char &pid) | |
virtual | ~Pass () |
PassKind | getPassKind () const |
virtual const char * | getPassName () const |
AnalysisID | getPassID () const |
getPassID - Return the PassID number that corresponds to this pass. More... | |
virtual bool | doInitialization (Module &) |
virtual bool | doFinalization (Module &) |
void | dump () const |
void | setResolver (AnalysisResolver *AR) |
AnalysisResolver * | getResolver () const |
virtual void * | getAdjustedAnalysisPointer (AnalysisID ID) |
virtual ImmutablePass * | getAsImmutablePass () |
virtual PMDataManager * | getAsPMDataManager () |
virtual void | verifyAnalysis () const |
virtual void | dumpPassStructure (unsigned Offset=0) |
template<typename AnalysisType > | |
AnalysisType * | getAnalysisIfAvailable () const |
bool | mustPreserveAnalysisID (char &AID) const |
template<typename AnalysisType > | |
AnalysisType & | getAnalysis () const |
template<typename AnalysisType > | |
AnalysisType & | getAnalysis (Function &F) |
template<typename AnalysisType > | |
AnalysisType & | getAnalysisID (AnalysisID PI) const |
template<typename AnalysisType > | |
AnalysisType & | getAnalysisID (AnalysisID PI, Function &F) |
Static Public Attributes | |
static char | ID = 0 |
Protected Member Functions | |
bool | AddUsersImpl (Instruction *I, SmallPtrSet< Loop *, 16 > &SimpleLoopNests) |
Friends | |
class | IVStrideUse |
Additional Inherited Members | |
![]() | |
static const PassInfo * | lookupPassInfo (const void *TI) |
static const PassInfo * | lookupPassInfo (StringRef Arg) |
static Pass * | createPass (AnalysisID ID) |
typedef ilist<IVStrideUse>::iterator llvm::IVUsers::iterator |
IVUsers::IVUsers | ( | ) |
Definition at line 220 of file IVUsers.cpp.
References llvm::PassRegistry::getPassRegistry(), and llvm::initializeIVUsersPass().
IVStrideUse & IVUsers::AddUser | ( | Instruction * | User, |
Value * | Operand | ||
) |
Definition at line 215 of file IVUsers.cpp.
References IVStrideUse.
bool IVUsers::AddUsersIfInteresting | ( | Instruction * | I | ) |
AddUsersIfInteresting - 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 206 of file IVUsers.cpp.
References AddUsersImpl().
|
protected |
AddUsersImpl - 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 114 of file IVUsers.cpp.
References AddUsersImpl(), llvm::dbgs(), DEBUG, llvm::PHINode::getIncomingValueNumForOperand(), llvm::LoopInfo::getLoopFor(), llvm::Instruction::getParent(), llvm::ScalarEvolution::getSCEV(), llvm::Value::getType(), llvm::ScalarEvolution::getTypeSizeInBits(), llvm::SmallPtrSet< PtrType, SmallSize >::insert(), isInteresting(), llvm::DataLayout::isLegalInteger(), llvm::isSafeToSpeculativelyExecute(), llvm::ScalarEvolution::isSCEVable(), isSimplifiedLoopNest(), IVStrideUse, llvm::NormalizeAutodetect, llvm::TargetOpcode::PHI, llvm::TransformForPostIncUse(), llvm::Value::use_begin(), and llvm::Value::use_end().
Referenced by AddUsersIfInteresting(), and AddUsersImpl().
|
inline |
void IVUsers::dump | ( | ) | const |
dump - This method is used for debugging.
Definition at line 277 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.
Definition at line 294 of file IVUsers.cpp.
References llvm::IVStrideUse::getOperandValToReplace(), llvm::IVStrideUse::getPostIncLoops(), getReplacementExpr(), llvm::IVStrideUse::getUser(), llvm::Normalize, and llvm::TransformForPostIncUse().
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 289 of file IVUsers.cpp.
References llvm::IVStrideUse::getOperandValToReplace().
const SCEV * IVUsers::getStride | ( | const IVStrideUse & | IU, |
const Loop * | L | ||
) | const |
Definition at line 320 of file IVUsers.cpp.
References findAddRecForLoop(), and getExpr().
|
inline |
|
virtual |
print - Print out the internal state of the pass. This is called by Analyze to print out the contents of an analysis. Otherwise it is not necessary to implement this method. Beware that the module pointer MAY be null. This automatically forwards to a virtual function that does not provide the Module* in case the analysis doesn't need it it can just be ignored.
Reimplemented from llvm::Pass.
Definition at line 249 of file IVUsers.cpp.
References llvm::LoopBase< N, M >::getHeader(), getReplacementExpr(), I, and llvm::WriteAsOperand().
Referenced by dump().
|
friend |
Definition at line 120 of file IVUsers.h.
Referenced by AddUser(), and AddUsersImpl().