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. | |
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.
| llvm::LoopBlocksTraversal::LoopBlocksTraversal | ( | LoopBlocksDFS & | Storage, |
| LoopInfo * | LInfo | ||
| ) | [inline] |
Definition at line 132 of file LoopIterator.h.
| POTIterator llvm::LoopBlocksTraversal::begin | ( | ) | [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< BlockT, LoopT >::getHeader(), llvm::LoopBase< BlockT, LoopT >::getNumBlocks(), and llvm::po_ext_begin().
Referenced by llvm::LoopBlocksDFS::perform().
| POTIterator llvm::LoopBlocksTraversal::end | ( | ) | [inline] |
Definition at line 143 of file LoopIterator.h.
References llvm::LoopBase< BlockT, LoopT >::getHeader(), and llvm::po_ext_end().
Referenced by llvm::LoopBlocksDFS::perform().
| void llvm::LoopBlocksTraversal::finishPostorder | ( | BasicBlock * | BB | ) | [inline] |
Called by po_iterator each time it advances, indicating a block's postorder.
Definition at line 162 of file LoopIterator.h.
References llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT >::count().
| bool llvm::LoopBlocksTraversal::visitPreorder | ( | BasicBlock * | BB | ) | [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< BlockT, LoopT >::contains(), llvm::LoopInfo::getLoopFor(), and llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT >::insert().