C-Breeze
C Compiler Infrastructure

[ Project home page]
Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

Dominators Class Reference

dominator tree More...

#include <dominators.h>

List of all members.

Public Types

typedef vector< basicblockNode * > basicblock_vec
typedef map< basicblockNode *,
int > 
index_map
typedef map< basicblockNode *,
basicblockNode * > 
basicblock_map
typedef map< basicblockNode *,
basicblock_bitset
basicblockset_map

Public Member Functions

 Dominators (procNode *proc, bool forward)
 ~Dominators ()
void print ()

Static Public Member Functions

bool dominates (basicblockNode *A, basicblockNode *B)
 Check if A dominates B.


Private Member Functions

void dominator_tree ()
void depth_first_search (basicblockNode *node, basicblockNode *par)
void compress (basicblockNode *v)
basicblockNodeeval (basicblockNode *v)
void link (basicblockNode *v, basicblockNode *w)

Private Attributes

procNode_proc
 Procedure.

basicblockNode_root
 The root node.

const bool _forward
 whether to build a dom-tree or a pdom-tree If true, build post-dominators information _forward = true --> successors --> dominators _forward = false --> predecessors --> post-dominators

index_map node_index
 Map from basic blocks to df order.

basicblock_vec df_vec
 Basic blocks in depth first order.

int _index

Static Private Attributes

basicblockNodeNone = 0
 A special basic block: not in any cfg.


Friends

class dominator_info


Detailed Description

dominator tree

Definition at line 72 of file dominators.h.


Member Typedef Documentation

typedef map<basicblockNode *, basicblockNode *> Dominators::basicblock_map
 

Definition at line 81 of file dominators.h.

typedef vector<basicblockNode *> Dominators::basicblock_vec
 

Definition at line 79 of file dominators.h.

typedef map<basicblockNode *, basicblock_bitset> Dominators::basicblockset_map
 

Definition at line 82 of file dominators.h.

typedef map<basicblockNode *, int> Dominators::index_map
 

Definition at line 80 of file dominators.h.


Constructor & Destructor Documentation

Dominators::Dominators procNode   proc,
bool    forward
 

Definition at line 43 of file dominators.cc.

References _root, BASICBLOCK_BITSET_SIZE, procNode::body(), procNode::decl(), df_vec, dominator_info, dominator_tree(), procNode::entry(), procNode::exit(), basicblockNode::info(), declNode::name(), None, and blockNode::stmts().

Dominators::~Dominators  
 

Definition at line 325 of file dominators.cc.


Member Function Documentation

void Dominators::compress basicblockNode   v [private]
 

Definition at line 223 of file dominators.cc.

References Ancestor, Label, None, and Sdno.

Referenced by eval().

void Dominators::depth_first_search basicblockNode   node,
basicblockNode   par
[private]
 

Definition at line 194 of file dominators.cc.

References _index, basicblock_list, basicblock_list_p, df_vec, dominator_info, basicblockNode::info(), node_index, and Parent.

Referenced by dominator_tree().

bool Dominators::dominates basicblockNode   A,
basicblockNode   B
[static]
 

Check if A dominates B.

Definition at line 332 of file dominators.cc.

References basicblockNode::parent().

Referenced by Pointers::analyze_procedure(), basicblockLocation::basicblockLocation(), loopTree::commonDominator(), DominanceFrontiers::compute_dominance_frontiers(), DFPreds::compute_dominance_frontiers(), and procedureInfo::remove_branch_blocks().

void Dominators::dominator_tree   [private]
 

Definition at line 111 of file dominators.cc.

References _index, basicblock_list, basicblock_list_p, Bucket, basicblockNode::children(), depth_first_search(), df_vec, eval(), link(), basicblockNode::parent(), Parent, basicblockNode::preds(), Sdno, and basicblockNode::succs().

Referenced by Dominators().

basicblockNode * Dominators::eval basicblockNode   v [private]
 

Definition at line 237 of file dominators.cc.

References Ancestor, compress(), Label, None, and Sdno.

Referenced by dominator_tree().

void Dominators::link basicblockNode   v,
basicblockNode   w
[private]
 

Definition at line 251 of file dominators.cc.

References Ancestor, Child, Label, None, Sdno, and Size.

Referenced by dominator_tree().

void Dominators::print  
 

Definition at line 283 of file dominators.cc.

References basicblock_list_p, stmtNode::comment(), df_vec, basicblockNode::dfn(), basicblockNode::parent(), basicblockNode::preds(), and basicblockNode::succs().


Friends And Related Function Documentation

friend class dominator_info [friend]
 

Definition at line 74 of file dominators.h.

Referenced by depth_first_search(), and Dominators().


Member Data Documentation

const bool Dominators::_forward [private]
 

whether to build a dom-tree or a pdom-tree If true, build post-dominators information _forward = true --> successors --> dominators _forward = false --> predecessors --> post-dominators

Definition at line 97 of file dominators.h.

int Dominators::_index [private]
 

Definition at line 108 of file dominators.h.

Referenced by depth_first_search(), and dominator_tree().

procNode* Dominators::_proc [private]
 

Procedure.

Definition at line 87 of file dominators.h.

basicblockNode* Dominators::_root [private]
 

The root node.

Definition at line 90 of file dominators.h.

Referenced by Dominators().

basicblock_vec Dominators::df_vec [private]
 

Basic blocks in depth first order.

Definition at line 103 of file dominators.h.

Referenced by depth_first_search(), dominator_tree(), Dominators(), and print().

index_map Dominators::node_index [private]
 

Map from basic blocks to df order.

Definition at line 100 of file dominators.h.

Referenced by depth_first_search().

basicblockNode * Dominators::None = 0 [static, private]
 

A special basic block: not in any cfg.

Definition at line 41 of file dominators.cc.

Referenced by compress(), Dominators(), eval(), and link().


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

Generated on August 27, 2003
Back to the C-Breeze home page