libFirm
irdom.h File Reference

Construct and access dominator tree. More...

#include "firm_types.h"
#include "begin.h"
#include "end.h"

Go to the source code of this file.

Macros

#define dominates_for_each(bl, curr)
 Iterate over all nodes which are immediately dominated by a given node.
#define postdominates_for_each(bl, curr)
 Iterate over all nodes which are immediately post dominated by a given node.

Functions

ir_nodeget_Block_idom (const ir_node *block)
 return immediate dominator of block
ir_nodeget_Block_ipostdom (const ir_node *block)
 return immediate postdominator of a block
int block_dominates (const ir_node *a, const ir_node *b)
 Check, if a block dominates another block.
int block_strictly_dominates (const ir_node *a, const ir_node *b)
 Check, if a block strictly dominates another block, i.e.
int block_postdominates (const ir_node *a, const ir_node *b)
 Check, if a block post dominates another block.
int block_strictly_postdominates (const ir_node *a, const ir_node *b)
 Check, if a block strictly post dominates another block, i.e.
ir_nodeget_Block_dominated_first (const ir_node *block)
 Returns the first node in the list of nodes dominated by a given block.
ir_nodeget_Block_postdominated_first (const ir_node *bl)
 Returns the first node in the list of nodes postdominated by a given blcok.
ir_nodeget_Block_dominated_next (const ir_node *node)
 Returns the next node in a list of nodes which are dominated by some other node.
ir_nodeget_Block_postdominated_next (const ir_node *node)
 Returns the next node in a list of nodes which are postdominated by another node.
ir_nodenode_smallest_common_dominator (ir_node *a, ir_node *b)
 Returns the smallest common dominator block of two nodes.
void dom_tree_walk (ir_node *n, irg_walk_func *pre, irg_walk_func *post, void *env)
 Visit all nodes in the dominator subtree of a given node.
void postdom_tree_walk (ir_node *n, irg_walk_func *pre, irg_walk_func *post, void *env)
 Visit all nodes in the post dominator subtree of a given node.
void dom_tree_walk_irg (ir_graph *irg, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walk over the dominator tree of an irg starting at the root.
void postdom_tree_walk_irg (ir_graph *irg, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walk over the post dominator tree of an irg starting at the root.
void compute_doms (ir_graph *irg)
 Computes the dominance relation for all basic blocks of a given graph.
void assure_doms (ir_graph *irg)
 Recomputes dominator relation of a graph if necessary.
void compute_postdoms (ir_graph *irg)
 Computes the post dominance relation for all basic blocks of a given graph.
void assure_postdoms (ir_graph *irg)
 Recompute postdominance relation if necessary.
void free_dom (ir_graph *irg)
 Frees the dominance data structures.
void free_postdom (ir_graph *irg)
 Frees the postdominance data structures.
void ir_compute_dominance_frontiers (ir_graph *irg)
 Compute the dominance frontiers for a given graph.
ir_node ** ir_get_dominance_frontier (const ir_node *block)
 Get the dominance frontier of a block.

Detailed Description

Construct and access dominator tree.

Author
Goetz Lindenmaier
Date
2.2002 This file contains routines to construct and access dominator information.

Definition in file irdom.h.