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. | |
| 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. | |
Static Public Attributes | |
| static char | ID = 0 |
Protected Member Functions | |
| bool | AddUsersImpl (Instruction *I, SmallPtrSet< Loop *, 16 > &SimpleLoopNests) |
Friends | |
| class | IVStrideUse |
| 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 llvm::iplist< NodeTy, Traits >::back(), IVStrideUse, and llvm::ilist< NodeTy >::push_back().
| 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().
| bool IVUsers::AddUsersImpl | ( | Instruction * | I, |
| SmallPtrSet< Loop *, 16 > & | SimpleLoopNests | ||
| ) | [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::iplist< NodeTy, Traits >::back(), llvm::SmallPtrSet< PtrType, SmallSize >::count(), 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::PHI, llvm::ilist< NodeTy >::push_back(), llvm::TransformForPostIncUse(), llvm::Value::use_begin(), and llvm::Value::use_end().
Referenced by AddUsersIfInteresting(), and AddUsersImpl().
| iterator llvm::IVUsers::begin | ( | ) | [inline] |
Definition at line 162 of file IVUsers.h.
References llvm::iplist< NodeTy, Traits >::begin().
| const_iterator llvm::IVUsers::begin | ( | ) | const [inline] |
Definition at line 164 of file IVUsers.h.
References llvm::iplist< NodeTy, Traits >::begin().
| void IVUsers::dump | ( | ) | const |
dump - This method is used for debugging.
Reimplemented from llvm::Pass.
Definition at line 277 of file IVUsers.cpp.
References llvm::dbgs(), and print().
| bool llvm::IVUsers::empty | ( | ) | const [inline] |
Definition at line 166 of file IVUsers.h.
References llvm::iplist< NodeTy, Traits >::empty().
| iterator llvm::IVUsers::end | ( | ) | [inline] |
Definition at line 163 of file IVUsers.h.
References llvm::iplist< NodeTy, Traits >::end().
| const_iterator llvm::IVUsers::end | ( | ) | const [inline] |
Definition at line 165 of file IVUsers.h.
References llvm::iplist< NodeTy, Traits >::end().
| 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().
| bool llvm::IVUsers::isIVUserOrOperand | ( | Instruction * | Inst | ) | const [inline] |
Definition at line 168 of file IVUsers.h.
References llvm::SmallPtrSet< PtrType, SmallSize >::count().
| void IVUsers::print | ( | raw_ostream & | O, |
| const Module * | M = 0 |
||
| ) | const [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::iplist< NodeTy, Traits >::begin(), llvm::iplist< NodeTy, Traits >::end(), llvm::LoopBase< BlockT, LoopT >::getHeader(), getReplacementExpr(), I, and llvm::WriteAsOperand().
Referenced by dump().
friend class IVStrideUse [friend] |
Definition at line 120 of file IVUsers.h.
Referenced by AddUser(), and AddUsersImpl().
char IVUsers::ID = 0 [static] |