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

#include "config.h"
#include "system.h"
#include "rtl.h"
#include "hard-reg-set.h"
#include "basic-block.h"
#include "insn-config.h"
#include "recog.h"
#include "toplev.h"
#include "tm_p.h"

Include dependency graph for cfganal.c:

Go to the source code of this file.

Data Types

type  depth_first_search_dsS
type  dfst_node

Typedefs

typedef struct
depth_first_search_dsS
depth_first_search_ds

Functions/Subroutines

static void
flow_dfs_compute_reverse_init 
PARAMS ((depth_first_search_ds))
static void
flow_dfs_compute_reverse_add_bb 
PARAMS ((depth_first_search_ds, basic_block))
static void remove_fake_successors PARAMS ((basic_block))
static bool need_fake_edge_p PARAMS ((rtx))
static bool flow_active_insn_p (rtx insn)
bool forwarder_block_p (basic_block bb)
bool can_fallthru (basic_block src, basic_block target)
bool mark_dfs_back_edges ()
void set_edge_can_fallthru_flag ()
static bool need_fake_edge_p (rtx insn)
int flow_call_edges_add (sbitmap blocks)
void find_unreachable_blocks ()
struct edge_listcreate_edge_list ()
void free_edge_list (struct edge_list *elist)
void print_edge_list (FILE *f, struct edge_list *elist)
void verify_edge_list (FILE *f, struct edge_list *elist)
int find_edge_index (struct edge_list *edge_list, basic_block pred, basic_block succ)
void flow_nodes_print (char *str, const sbitmap nodes, FILE *file) const
void flow_edge_list_print (char *str, const edge *edge_list, int num_edges, FILE *file) const
static void remove_fake_successors (basic_block bb)
void remove_fake_edges ()
void add_noreturn_fake_exit_edges ()
void connect_infinite_loops_to_exit ()
void flow_reverse_top_sort_order_compute (int *rts_order)
int flow_depth_first_order_compute (int *dfs_order, int *rc_order)
void flow_preorder_transversal_compute (int *pot_order)
static void flow_dfs_compute_reverse_init (depth_first_search_ds data)
static void flow_dfs_compute_reverse_add_bb (depth_first_search_ds data, basic_block bb)
static basic_block flow_dfs_compute_reverse_execute (depth_first_search_ds data)
static void flow_dfs_compute_reverse_finish (depth_first_search_ds data)
int dfs_enumerate_from (basic_block bb, int reverse, bool *predicate, basic_block *rslt, int rslt_max, void *data)


Typedef Documentation

Definition at line 45 of file cfganal.c.


Function Documentation

void add_noreturn_fake_exit_edges ( void   ) 

bool can_fallthru ( basic_block  src,
basic_block  target 
)

void connect_infinite_loops_to_exit ( void   ) 

struct edge_list* create_edge_list ( void   )  [read]

int dfs_enumerate_from ( basic_block  bb,
int  reverse,
bool predicate,
basic_block rslt,
int  rslt_max,
void data 
)

int find_edge_index ( struct edge_list edge_list,
basic_block  pred,
basic_block  succ 
)

Definition at line 609 of file cfganal.c.

void find_unreachable_blocks ( void   ) 

Definition at line 406 of file cfganal.c.

Referenced by delete_unreachable_blocks(), and ssa_ccp_df_delete_unreachable_insns().

static bool flow_active_insn_p ( rtx  insn  )  [static]

Definition at line 63 of file cfganal.c.

References active_insn_p(), GET_CODE, PATTERN, REG, REG_FUNCTION_VALUE_P, and XEXP.

Referenced by forwarder_block_p().

int flow_call_edges_add ( sbitmap  blocks  ) 

Definition at line 283 of file cfganal.c.

Referenced by branch_prob().

int flow_depth_first_order_compute ( int *  dfs_order,
int *  rc_order 
)

Definition at line 820 of file cfganal.c.

Referenced by df_analyse_1(), df_analyze_1(), flow_loops_find(), and vt_find_locations().

static void flow_dfs_compute_reverse_add_bb ( depth_first_search_ds  data,
basic_block  bb 
) [static]

static basic_block flow_dfs_compute_reverse_execute ( depth_first_search_ds  data  )  [static]

static void flow_dfs_compute_reverse_finish ( depth_first_search_ds  data  )  [static]

Definition at line 1128 of file cfganal.c.

References free(), and sbitmap_free.

Referenced by connect_infinite_loops_to_exit().

static void flow_dfs_compute_reverse_init ( depth_first_search_ds  data  )  [static]

void flow_edge_list_print ( char *  str,
const edge edge_list,
int  num_edges,
FILE file 
) const

Definition at line 644 of file cfganal.c.

References edge::dest, fprintf(), fputs(), i, and src.

Referenced by flow_loop_dump().

void flow_nodes_print ( char *  str,
const sbitmap  nodes,
FILE file 
) const

Definition at line 626 of file cfganal.c.

References EXECUTE_IF_SET_IN_SBITMAP, fprintf(), fputs(), and node.

void flow_preorder_transversal_compute ( int *  pot_order  ) 

void flow_reverse_top_sort_order_compute ( int *  rts_order  ) 

Definition at line 751 of file cfganal.c.

Referenced by df_analyse_1(), df_analyze_1(), and set_up_bb_rts_numbers().

bool forwarder_block_p ( basic_block  bb  ) 

void free_edge_list ( struct edge_list elist  ) 

bool mark_dfs_back_edges ( void   ) 

static bool need_fake_edge_p ( rtx  insn  )  [static]

static bool need_fake_edge_p PARAMS ( (rtx  )  [static]

static void remove_fake_successors PARAMS ( (basic_block  )  [static]

static void flow_dfs_compute_reverse_add_bb PARAMS ( (depth_first_search_ds, basic_block  )  [static]

static void flow_dfs_compute_reverse_init PARAMS ( (depth_first_search_ds  )  [static]

void print_edge_list ( FILE f,
struct edge_list elist 
)

Definition at line 513 of file cfganal.c.

Referenced by pre_edge_lcm(), and pre_edge_rev_lcm().

void remove_fake_edges ( void   ) 

static void remove_fake_successors ( basic_block  bb  )  [static]

Definition at line 669 of file cfganal.c.

References EDGE_FAKE, edge::flags, remove_edge(), edge::succ, edge::succ_next, and tmp.

Referenced by remove_fake_edges().

void set_edge_can_fallthru_flag ( void   ) 

Definition at line 218 of file cfganal.c.

Referenced by reorder_basic_blocks().

void verify_edge_list ( FILE f,
struct edge_list elist 
)

Definition at line 542 of file cfganal.c.

Referenced by pre_edge_lcm(), and pre_edge_rev_lcm().


Generated on Wed Apr 8 15:13:27 2009 for Open64 by  doxygen 1.5.6