osprey/kg++fe/gnu/dominance.c File Reference

#include "config.h"
#include "system.h"
#include "rtl.h"
#include "hard-reg-set.h"
#include "basic-block.h"
#include "errors.h"
#include "et-forest.h"

Include dependency graph for dominance.c:

Go to the source code of this file.

Data Types

type  dominance_info
type  dom_info

Defines

#define BB_NODE(info, bb)   ((et_forest_node_t)VARRAY_GENERIC_PTR ((info)->varray, (bb)->index + 2))
#define SET_BB_NODE(info, bb, node)   (VARRAY_GENERIC_PTR ((info)->varray, (bb)->index + 2) = (node))
#define init_ar(var, type, num, content)

Typedefs

typedef unsigned int TBB

Functions/Subroutines

static void init_dom_info PARAMS ((struct dom_info *))
static void calc_dfs_tree_nonrec PARAMS ((struct dom_info *, basic_block, enum cdi_direction))
static void calc_dfs_tree PARAMS ((struct dom_info *, enum cdi_direction))
static void compress PARAMS ((struct dom_info *, TBB))
static void link_roots PARAMS ((struct dom_info *, TBB, TBB))
void debug_dominance_info PARAMS ((dominance_info))
static void init_dom_info (struct dom_info *di)
static void free_dom_info (struct dom_info *di)
static void calc_dfs_tree_nonrec (struct dom_info *di, basic_block bb, enum cdi_direction reverse)
static void calc_dfs_tree (struct dom_info *di, enum cdi_direction reverse)
static void compress (struct dom_info *di, TBB v)
static TBB eval (struct dom_info *di, TBB v)
static void link_roots (struct dom_info *di, TBB v, TBB w)
static void calc_idoms (struct dom_info *di, enum cdi_direction reverse)
dominance_info calculate_dominance_info (enum cdi_direction reverse)
void free_dominance_info (dominance_info info)
basic_block get_immediate_dominator (dominance_info dom, basic_block bb)
void set_immediate_dominator (dominance_info dom, basic_block bb, basic_block dominated_by)
int get_dominated_by (dominance_info dom, basic_block bb, basic_block **bbs)
void redirect_immediate_dominators (dominance_info dom, basic_block bb, basic_block to)
basic_block nearest_common_dominator (dominance_info dom, basic_block bb1, basic_block bb2)
bool dominated_by_p (dominance_info dom, basic_block bb1, basic_block bb2)
void verify_dominators (dominance_info dom)
basic_block recount_dominator (dominance_info dom, basic_block bb)
void iterate_fix_dominators (dominance_info dom, basic_block *bbs, int n)
void add_to_dominance_info (dominance_info dom, basic_block bb)
void delete_from_dominance_info (dominance_info dom, basic_block bb)
void debug_dominance_info (dominance_info dom)


Define Documentation

#define BB_NODE ( info,
bb   )     ((et_forest_node_t)VARRAY_GENERIC_PTR ((info)->varray, (bb)->index + 2))

#define init_ar ( var,
type,
num,
content   ) 

Value:

do                \
    {               \
      unsigned int i = 1;    /* Catch content == i.  */   \
      if (! (content))            \
  (var) = (type *) xcalloc ((num), sizeof (type));  \
      else              \
  {             \
    (var) = (type *) xmalloc ((num) * sizeof (type)); \
    for (i = 0; i < num; i++)       \
      (var)[i] = (content);       \
  }             \
    }               \
  while (0)

Definition at line 132 of file dominance.c.

Referenced by init_dom_info().

#define SET_BB_NODE ( info,
bb,
node   )     (VARRAY_GENERIC_PTR ((info)->varray, (bb)->index + 2) = (node))


Typedef Documentation

typedef unsigned int TBB

Definition at line 63 of file dominance.c.


Function Documentation

void add_to_dominance_info ( dominance_info  dom,
basic_block  bb 
)

Definition at line 786 of file dominance.c.

References abort, et_forest_add_node(), last_basic_block, SET_BB_NODE, and VARRAY_GROW.

Referenced by create_basic_block(), and find_if_case_1().

static void calc_dfs_tree ( struct dom_info di,
enum cdi_direction  reverse 
) [static]

static void calc_dfs_tree_nonrec ( struct dom_info di,
basic_block  bb,
enum cdi_direction  reverse 
) [static]

static void calc_idoms ( struct dom_info di,
enum cdi_direction  reverse 
) [static]

dominance_info calculate_dominance_info ( enum cdi_direction  reverse  ) 

static void compress ( struct dom_info di,
TBB  v 
) [static]

Definition at line 365 of file dominance.c.

Referenced by compress(), and eval().

void debug_dominance_info ( dominance_info  dom  ) 

Definition at line 808 of file dominance.c.

References FOR_EACH_BB, fprintf(), get_immediate_dominator(), and basic_block_def::index.

void delete_from_dominance_info ( dominance_info  dom,
basic_block  bb 
)

bool dominated_by_p ( dominance_info  dom,
basic_block  bb1,
basic_block  bb2 
)

static TBB eval ( struct dom_info di,
TBB  v 
) [inline, static]

static void free_dom_info ( struct dom_info di  )  [static]

Definition at line 181 of file dominance.c.

References free().

Referenced by calculate_dominance_info().

void free_dominance_info ( dominance_info  info  ) 

int get_dominated_by ( dominance_info  dom,
basic_block  bb,
basic_block **  bbs 
)

basic_block get_immediate_dominator ( dominance_info  dom,
basic_block  bb 
)

static void init_dom_info ( struct dom_info di  )  [static]

Definition at line 151 of file dominance.c.

References i, init_ar, last_basic_block, and n_basic_blocks.

Referenced by calculate_dominance_info().

void iterate_fix_dominators ( dominance_info  dom,
basic_block bbs,
int  n 
)

static void link_roots ( struct dom_info di,
TBB  v,
TBB  w 
) [static]

Definition at line 418 of file dominance.c.

References s, and tmp.

Referenced by calc_idoms().

basic_block nearest_common_dominator ( dominance_info  dom,
basic_block  bb1,
basic_block  bb2 
)

void debug_dominance_info PARAMS ( (dominance_info  ) 

static void link_roots PARAMS ( (struct dom_info *, TBB, TBB  )  [static]

static void compress PARAMS ( (struct dom_info *, TBB  )  [static]

static void calc_dfs_tree PARAMS ( (struct dom_info *, enum cdi_direction  )  [static]

static void calc_dfs_tree_nonrec PARAMS ( (struct dom_info *, basic_block, enum cdi_direction  )  [static]

static void init_dom_info PARAMS ( (struct dom_info *)   )  [static]

basic_block recount_dominator ( dominance_info  dom,
basic_block  bb 
)

void redirect_immediate_dominators ( dominance_info  dom,
basic_block  bb,
basic_block  to 
)

void set_immediate_dominator ( dominance_info  dom,
basic_block  bb,
basic_block  dominated_by 
) [inline]

void verify_dominators ( dominance_info  dom  ) 


Generated on Wed Apr 8 15:31:28 2009 for Open64 by  doxygen 1.5.6