osprey-gcc-4.2.0/gcc/dominance.c File Reference

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "rtl.h"
#include "hard-reg-set.h"
#include "obstack.h"
#include "basic-block.h"
#include "toplev.h"
#include "et-forest.h"
#include "timevar.h"

Include dependency graph for dominance.c:

Go to the source code of this file.

Data Types

type  dom_info

Defines

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

Typedefs

typedef unsigned int TBB

Functions/Subroutines

static void init_dom_info (struct dom_info *, enum cdi_direction)
static void free_dom_info (struct dom_info *)
static void calc_dfs_tree_nonrec (struct dom_info *, basic_block, enum cdi_direction)
static void calc_dfs_tree (struct dom_info *, enum cdi_direction)
static void compress (struct dom_info *, TBB)
static TBB eval (struct dom_info *, TBB)
static void link_roots (struct dom_info *, TBB, TBB)
static void calc_idoms (struct dom_info *, enum cdi_direction)
void debug_dominance_info (enum cdi_direction)
static void assign_dfs_numbers (struct et_node *node, int *num)
static void compute_dom_fast_query (enum cdi_direction dir)
void calculate_dominance_info (enum cdi_direction dir)
void free_dominance_info (enum cdi_direction dir)
basic_block get_immediate_dominator (enum cdi_direction dir, basic_block bb)
void set_immediate_dominator (enum cdi_direction dir, basic_block bb, basic_block dominated_by)
int get_dominated_by (enum cdi_direction dir, basic_block bb, basic_block **bbs)
unsigned get_dominated_by_region (enum cdi_direction dir, basic_block *region, unsigned n_region, basic_block *doms)
void redirect_immediate_dominators (enum cdi_direction dir, basic_block bb, basic_block to)
basic_block nearest_common_dominator (enum cdi_direction dir, basic_block bb1, basic_block bb2)
basic_block nearest_common_dominator_for_set (enum cdi_direction dir, bitmap blocks)
bool dominated_by_p (enum cdi_direction dir, basic_block bb1, basic_block bb2)
unsigned bb_dom_dfs_in (enum cdi_direction dir, basic_block bb)
unsigned bb_dom_dfs_out (enum cdi_direction dir, basic_block bb)
void verify_dominators (enum cdi_direction dir)
basic_block recount_dominator (enum cdi_direction dir, basic_block bb)
void iterate_fix_dominators (enum cdi_direction dir, basic_block *bbs, int n)
void add_to_dominance_info (enum cdi_direction dir, basic_block bb)
void delete_from_dominance_info (enum cdi_direction dir, basic_block bb)
basic_block first_dom_son (enum cdi_direction dir, basic_block bb)
basic_block next_dom_son (enum cdi_direction dir, basic_block bb)
bool dom_info_available_p (enum cdi_direction dir)

Variables

enum dom_state dom_computed [2]
static unsigned n_bbs_in_dom_tree [2]


Define Documentation

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

Value:

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

Definition at line 131 of file dominance.c.


Typedef Documentation

typedef unsigned int TBB

Definition at line 58 of file dominance.c.


Function Documentation

void add_to_dominance_info ( enum cdi_direction  dir,
basic_block  bb 
)

static void assign_dfs_numbers ( struct et_node node,
int *  num 
) [static]

unsigned bb_dom_dfs_in ( enum cdi_direction  dir,
basic_block  bb 
)

Definition at line 915 of file dominance.c.

References et_node::dfs_num_in, dom_computed, DOM_OK, gcc_assert, and n.

Referenced by prune_unused_phi_nodes().

unsigned bb_dom_dfs_out ( enum cdi_direction  dir,
basic_block  bb 
)

Definition at line 926 of file dominance.c.

References et_node::dfs_num_out, dom_computed, DOM_OK, gcc_assert, and n.

Referenced by prune_unused_phi_nodes().

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]

void calculate_dominance_info ( enum cdi_direction  dir  ) 

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

Definition at line 383 of file dominance.c.

References compress(), dom_info::key, dom_info::path_min, and dom_info::set_chain.

static void compute_dom_fast_query ( enum cdi_direction  dir  )  [static]

void debug_dominance_info ( enum cdi_direction  dir  ) 

void delete_from_dominance_info ( enum cdi_direction  dir,
basic_block  bb 
)

bool dom_info_available_p ( enum cdi_direction  dir  ) 

bool dominated_by_p ( enum cdi_direction  dir,
basic_block  bb1,
basic_block  bb2 
)

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

Definition at line 403 of file dominance.c.

References compress(), dom_info::key, dom_info::path_min, and dom_info::set_chain.

basic_block first_dom_son ( enum cdi_direction  dir,
basic_block  bb 
)

static void free_dom_info ( struct dom_info di  )  [static]

void free_dominance_info ( enum cdi_direction  dir  ) 

int get_dominated_by ( enum cdi_direction  dir,
basic_block  bb,
basic_block **  bbs 
)

unsigned get_dominated_by_region ( enum cdi_direction  dir,
basic_block region,
unsigned  n_region,
basic_block doms 
)

basic_block get_immediate_dominator ( enum cdi_direction  dir,
basic_block  bb 
)

Definition at line 675 of file dominance.c.

References et_node::data, dom_computed, et_node::father, gcc_assert, node, and NULL.

static void init_dom_info ( struct dom_info di,
enum cdi_direction  dir 
) [static]

void iterate_fix_dominators ( enum cdi_direction  dir,
basic_block bbs,
int  n 
)

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

basic_block nearest_common_dominator ( enum cdi_direction  dir,
basic_block  bb1,
basic_block  bb2 
)

Definition at line 790 of file dominance.c.

References et_node::data, dom_computed, et_nca(), and gcc_assert.

basic_block nearest_common_dominator_for_set ( enum cdi_direction  dir,
bitmap  blocks 
)

basic_block next_dom_son ( enum cdi_direction  dir,
basic_block  bb 
)

basic_block recount_dominator ( enum cdi_direction  dir,
basic_block  bb 
)

void redirect_immediate_dominators ( enum cdi_direction  dir,
basic_block  bb,
basic_block  to 
)

void set_immediate_dominator ( enum cdi_direction  dir,
basic_block  bb,
basic_block  dominated_by 
) [inline]

void verify_dominators ( enum cdi_direction  dir  ) 


Variable Documentation

unsigned n_bbs_in_dom_tree[2] [static]

Definition at line 127 of file dominance.c.


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