LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | List of all members
llvm::LoopBlocksTraversal Class Reference

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)
 

Detailed Description

Traverse the blocks in a loop using a depth-first search.

Definition at line 122 of file LoopIterator.h.

Member Typedef Documentation

Graph traversal iterator.

Definition at line 125 of file LoopIterator.h.

Constructor & Destructor Documentation

llvm::LoopBlocksTraversal::LoopBlocksTraversal ( LoopBlocksDFS Storage,
LoopInfo LInfo 
)
inline

Definition at line 132 of file LoopIterator.h.

Member Function Documentation

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< N, M >::getHeader(), llvm::LoopBase< N, M >::getNumBlocks(), and llvm::po_ext_begin().

Referenced by llvm::LoopBlocksDFS::perform().

POTIterator llvm::LoopBlocksTraversal::end ( )
inline
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.

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< N, M >::contains(), and llvm::LoopInfo::getLoopFor().


The documentation for this class was generated from the following file: