osprey-gcc/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 "errors.h"
#include "et-forest.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)
bool dominated_by_p (enum cdi_direction dir, basic_block bb1, basic_block bb2)
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) = xcalloc ((num), sizeof (type));     \
      else              \
  {             \
    (var) = xmalloc ((num) * sizeof (type));    \
    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 
)

Definition at line 929 of file dominance.c.

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

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 385 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  ) 

Definition at line 986 of file dominance.c.

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

void delete_from_dominance_info ( enum cdi_direction  dir,
basic_block  bb 
)

Definition at line 943 of file dominance.c.

bool dom_info_available_p ( enum cdi_direction  dir  ) 

Definition at line 980 of file dominance.c.

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

Definition at line 802 of file dominance.c.

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

Definition at line 405 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 
)

Definition at line 959 of file dominance.c.

static void free_dom_info ( struct dom_info di  )  [static]

void free_dominance_info ( enum cdi_direction  dir  ) 

Definition at line 653 of file dominance.c.

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

Definition at line 712 of file dominance.c.

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

Definition at line 742 of file dominance.c.

basic_block get_immediate_dominator ( enum cdi_direction  dir,
basic_block  bb 
)

Definition at line 673 of file dominance.c.

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 
)

Definition at line 899 of file dominance.c.

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 788 of file dominance.c.

basic_block next_dom_son ( enum cdi_direction  dir,
basic_block  bb 
)

Definition at line 970 of file dominance.c.

basic_block recount_dominator ( enum cdi_direction  dir,
basic_block  bb 
)

Definition at line 863 of file dominance.c.

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

Definition at line 764 of file dominance.c.

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

Definition at line 688 of file dominance.c.

void verify_dominators ( enum cdi_direction  dir  ) 

Definition at line 817 of file dominance.c.


Variable Documentation

Definition at line 48 of file dominance.c.

unsigned n_bbs_in_dom_tree[2] [static]


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