LLVM API Documentation
Traverse the blocks in a loop using a depth-first search. More...
#include <LoopIterator.h>
Public Types | |
typedef po_iterator < BasicBlock *, LoopBlocksTraversal, true > | POTIterator |
Graph traversal iterator. More... | |
Public Member Functions | |
LoopBlocksTraversal (LoopBlocksDFS &Storage, LoopInfo *LInfo) | |
POTIterator | begin () |
POTIterator | end () |
bool | visitPreorder (BasicBlock *BB) |
void | finishPostorder (BasicBlock *BB) |
Traverse the blocks in a loop using a depth-first search.
Definition at line 122 of file LoopIterator.h.
Graph traversal iterator.
Definition at line 125 of file LoopIterator.h.
|
inline |
Definition at line 132 of file LoopIterator.h.
|
inline |
Postorder traversal over the graph. This only needs to be done once. po_iterator "automatically" calls back to visitPreorder and finishPostorder to record the DFS result.
Definition at line 138 of file LoopIterator.h.
References llvm::LoopBase< N, M >::getHeader(), llvm::LoopBase< N, M >::getNumBlocks(), and llvm::po_ext_begin().
Referenced by llvm::LoopBlocksDFS::perform().
|
inline |
Definition at line 143 of file LoopIterator.h.
References llvm::LoopBase< N, M >::getHeader(), and llvm::po_ext_end().
Referenced by llvm::LoopBlocksDFS::perform().
|
inline |
Called by po_iterator each time it advances, indicating a block's postorder.
Definition at line 162 of file LoopIterator.h.
|
inline |
Called by po_iterator upon reaching a block via a CFG edge. If this block is contained in the loop and has not been visited, then mark it preorder visited and return true.
TODO: If anyone is interested, we could record preorder numbers here.
Definition at line 153 of file LoopIterator.h.
References llvm::LoopBase< N, M >::contains(), and llvm::LoopInfo::getLoopFor().