GPUOcelot
|
#include <DominatorTree.h>
Public Member Functions | |
DominatorTree (ir::ControlFlowGraph *cfg) | |
~DominatorTree () | |
std::ostream & | write (std::ostream &out) |
bool | dominates (ir::ControlFlowGraph::iterator block, ir::ControlFlowGraph::iterator potentialSuccessor) |
ir::ControlFlowGraph::iterator | getDominator (ir::ControlFlowGraph::iterator block) |
Public Attributes | |
ir::ControlFlowGraph * | cfg |
ir::ControlFlowGraph::BlockPointerVector | blocks |
std::vector< int > | i_dom |
std::vector< std::vector< int > > | dominated |
ir::ControlFlowGraph::BlockMap | blocksToIndex |
A tree structure in which each node corresponds to a BasicBlock in the control flow graph such that each node's block is immediately dominated by its parent. Each node is owned by its parent.
analysis::DominatorTree::DominatorTree | ( | ir::ControlFlowGraph * | cfg | ) |
analysis::DominatorTree::~DominatorTree | ( | ) |
bool analysis::DominatorTree::dominates | ( | ir::ControlFlowGraph::iterator | block, |
ir::ControlFlowGraph::iterator | potentialSuccessor | ||
) |
Does a particular block dominate another block?
ir::ControlFlowGraph::iterator analysis::DominatorTree::getDominator | ( | ir::ControlFlowGraph::iterator | block | ) |
Get the dominator of a given block
std::ostream & analysis::DominatorTree::write | ( | std::ostream & | out | ) |
Writes a representation of the DominatorTree to an output stream
the basic blocks in the CFG and dominator tree
Mapping from a BasicBlock to an index into the blocks vector
Parent control flow graph
std::vector< std::vector<int> > analysis::DominatorTree::dominated |
nth element stores a list of elements for which n is the immediate dominator
std::vector< int > analysis::DominatorTree::i_dom |
nth element stores the immediate dominator of node n or -1 if undefined