15 #ifndef LLVM_ANALYSIS_IVUSERS_H
16 #define LLVM_ANALYSIS_IVUSERS_H
27 class ScalarEvolution;
40 :
CallbackVH(U), Parent(P), OperandValToReplace(O) {
56 return OperandValToReplace;
62 OperandValToReplace = Op;
81 WeakVH OperandValToReplace;
89 virtual void deleted();
136 virtual void releaseMemory();
166 bool empty()
const {
return IVUses.empty(); }
169 return Processed.count(Inst);
const SCEV * getExpr(const IVStrideUse &IU) const
getExpr - Return the expression for the use.
const PostIncLoopSet & getPostIncLoops() const
IVStrideUse * createSentinel() const
The main container class for the LLVM Intermediate Representation.
Pass * createIVUsersPass()
void setOperandValToReplace(Value *Op)
bool AddUsersImpl(Instruction *I, SmallPtrSet< Loop *, 16 > &SimpleLoopNests)
LoopInfoBase< BlockT, LoopT > * LI
bool AddUsersIfInteresting(Instruction *I)
const SCEV * getStride(const IVStrideUse &IU, const Loop *L) const
IVStrideUse * provideInitialHead() const
const_iterator begin() const
static void noteHead(IVStrideUse *, IVStrideUse *)
IVStrideUse * ensureHead(IVStrideUse *) const
const_iterator end() const
Instruction * getUser() const
getUser - Return the user instruction for this use.
ilist< IVStrideUse >::const_iterator const_iterator
void setUser(Instruction *NewUser)
setUser - Assign a new user instruction for this use.
Value * getValPtr() const
const SCEV * getReplacementExpr(const IVStrideUse &IU) const
ilist< IVStrideUse >::iterator iterator
bool isIVUserOrOperand(Instruction *Inst) const
Value * getOperandValToReplace() const
void dump() const
dump - This method is used for debugging.
IVStrideUse(IVUsers *P, Instruction *U, Value *O)
void transformToPostInc(const Loop *L)
static NodeTy * createSentinel()
createSentinel - create the dynamic sentinel
LLVM Value Representation.
static void destroySentinel(IVStrideUse *)
void print(raw_ostream &OS, const Module *=0) const
IVStrideUse & AddUser(Instruction *User, Value *Operand)
INITIALIZE_PASS(GlobalMerge,"global-merge","Global Merge", false, false) bool GlobalMerge const DataLayout * TD