30 #ifndef LLVM_CODEGEN_MACHINELOOPINFO_H
31 #define LLVM_CODEGEN_MACHINELOOPINFO_H
41 extern template class LoopBase<MachineBasicBlock, MachineLoop>;
66 extern template class LoopInfoBase<MachineBasicBlock, MachineLoop>;
89 inline iterator
end()
const {
return LI.
end(); }
unsigned getLoopDepth(const BlockT *BB) const
getLoopDepth - Return the loop nesting level of the specified block.
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
void removeBlock(BlockT *BB)
removeBlock - This method completely removes BB from all data structures, including all of the Loop o...
LoopT * removeLoop(iterator I)
removeLoop - This removes the specified top-level loop from this loop info object.
static NodeType * getEntryNode(const MachineLoop *L)
bool isLoopHeader(const BlockT *BB) const
void addTopLevelLoop(MachineLoop *New)
addTopLevelLoop - This adds the specified loop to the collection of top-level loops.
void changeLoopFor(BlockT *BB, LoopT *L)
changeLoopFor - Change the top-level loop that contains BB to the specified loop. ...
LoopT * getLoopFor(const BlockT *BB) const
getLoopFor - Return the inner most loop that BB lives in.
void initializeMachineLoopInfoPass(PassRegistry &)
std::vector< LoopT * >::const_iterator iterator
iterator/begin/end - The interface to the top-level loops in the current function.
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
void removeBlock(MachineBasicBlock *BB)
removeBlock - This method completely removes BB from all data structures, including all of the Loop o...
MachineLoopInfo::iterator ChildIteratorType
void changeTopLevelLoop(MachineLoop *OldLoop, MachineLoop *NewLoop)
changeTopLevelLoop - Replace the specified loop in the top-level loops list with the indicated loop...
static ChildIteratorType child_begin(NodeType *N)
static ChildIteratorType child_end(NodeType *N)
MachineLoop * getLoopFor(const MachineBasicBlock *BB) const
getLoopFor - Return the inner most loop that BB lives in.
static ChildIteratorType child_end(NodeType *N)
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
void dump(const SparseBitVector< ElementSize > &LHS, raw_ostream &out)
static NodeType * getEntryNode(MachineLoop *L)
const MachineLoop * operator[](const MachineBasicBlock *BB) const
operator[] - same as getLoopFor...
Represent the analysis usage information of a pass.
void addTopLevelLoop(LoopT *New)
addTopLevelLoop - This adds the specified loop to the collection of top-level loops.
MachineLoopInfo::iterator ChildIteratorType
const MachineLoop NodeType
MachineLoop * removeLoop(iterator I)
removeLoop - This removes the specified top-level loop from this loop info object.
void changeLoopFor(MachineBasicBlock *BB, MachineLoop *L)
changeLoopFor - Change the top-level loop that contains BB to the specified loop. ...
bool isLoopHeader(const MachineBasicBlock *BB) const
unsigned getLoopDepth(const MachineBasicBlock *BB) const
getLoopDepth - Return the loop nesting level of the specified block...
void changeTopLevelLoop(LoopT *OldLoop, LoopT *NewLoop)
changeTopLevelLoop - Replace the specified loop in the top-level loops list with the indicated loop...
static ChildIteratorType child_begin(NodeType *N)
LoopInfoBase< MachineBasicBlock, MachineLoop >::iterator iterator
iterator/begin/end - The interface to the top-level loops in the current function.
LoopInfo - This class builds and contains all of the top level loop structures in the specified funct...
LoopInfoBase< MachineBasicBlock, MachineLoop > & getBase()