30 #ifndef LLVM_CODEGEN_MACHINELOOPINFO_H 31 #define LLVM_CODEGEN_MACHINELOOPINFO_H 43 extern template class LoopBase<MachineBasicBlock, MachineLoop>;
106 bool SpeculativePreheader =
false)
const;
193 #endif // LLVM_CODEGEN_MACHINELOOPINFO_H static NodeRef getEntryNode(MachineLoop *L)
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
This class represents lattice values for constants.
unsigned getLoopDepth(const BlockT *BB) const
Return the loop nesting level of the specified block.
void addTopLevelLoop(MachineLoop *New)
This adds the specified loop to the collection of top-level loops.
unsigned getLoopDepth(const MachineBasicBlock *BB) const
Return the loop nesting level of the specified block.
void initializeMachineLoopInfoPass(PassRegistry &)
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
LoopT * getLoopFor(const BlockT *BB) const
Return the inner most loop that BB lives in.
std::vector< LoopT * >::const_iterator iterator
iterator/begin/end - The interface to the top-level loops in the current function.
void removeBlock(MachineBasicBlock *BB)
This method completely removes BB from all data structures, including all of the Loop objects it is n...
static ChildIteratorType child_begin(NodeRef N)
void addTopLevelLoop(LoopT *New)
This adds the specified loop to the collection of top-level loops.
void changeTopLevelLoop(MachineLoop *OldLoop, MachineLoop *NewLoop)
Replace the specified loop in the top-level loops list with the indicated loop.
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)
MachineLoopInfo::iterator ChildIteratorType
Represent the analysis usage information of a pass.
const MachineLoop * operator[](const MachineBasicBlock *BB) const
Same as getLoopFor.
static ChildIteratorType child_begin(NodeRef N)
static ChildIteratorType child_end(NodeRef N)
LoopT * removeLoop(iterator I)
This removes the specified top-level loop from this loop info object.
static NodeRef getEntryNode(const MachineLoop *L)
bool isLoopHeader(const BlockT *BB) const
MachineLoop * removeLoop(iterator I)
This removes the specified top-level loop from this loop info object.
LoopInfoBase< MachineBasicBlock, MachineLoop >::iterator iterator
The iterator interface to the top-level loops in the current function.
void changeLoopFor(MachineBasicBlock *BB, MachineLoop *L)
Change the top-level loop that contains BB to the specified loop.
void changeTopLevelLoop(LoopT *OldLoop, LoopT *NewLoop)
Replace the specified loop in the top-level loops list with the indicated loop.
MachineLoopInfo::iterator ChildIteratorType
static ChildIteratorType child_end(NodeRef N)
void changeLoopFor(BlockT *BB, LoopT *L)
Change the top-level loop that contains BB to the specified loop.
bool isLoopHeader(const MachineBasicBlock *BB) const
True if the block is a loop header node.
MachineLoop * getLoopFor(const MachineBasicBlock *BB) const
Return the innermost loop that BB lives in.
void removeBlock(BlockT *BB)
This method completely removes BB from all data structures, including all of the Loop objects it is n...
This class builds and contains all of the top-level loop structures in the specified function...
LoopInfoBase< MachineBasicBlock, MachineLoop > & getBase()