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

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "rtl.h"
#include "obstack.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 "timevar.h"

Include dependency graph for cfganal.c:

Go to the source code of this file.

Data Types

type  depth_first_search_dsS

Defines

#define MARK_VISITED(BB)   (SET_BIT (visited, (BB)->index))
#define UNMARK_VISITED(BB)   (RESET_BIT (visited, (BB)->index))
#define VISITED_P(BB)   (TEST_BIT (visited, (BB)->index))

Typedefs

typedef struct
depth_first_search_dsS
depth_first_search_ds

Functions/Subroutines

static void flow_dfs_compute_reverse_init (depth_first_search_ds)
static void flow_dfs_compute_reverse_add_bb (depth_first_search_ds, basic_block)
static basic_block flow_dfs_compute_reverse_execute (depth_first_search_ds, basic_block)
static void flow_dfs_compute_reverse_finish (depth_first_search_ds)
static bool flow_active_insn_p (rtx)
bool forwarder_block_p (basic_block bb)
bool can_fallthru (basic_block src, basic_block target)
bool could_fall_through (basic_block src, basic_block target)
bool mark_dfs_back_edges (void)
void set_edge_can_fallthru_flag (void)
void find_unreachable_blocks (void)
struct edge_listcreate_edge_list (void)
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)
edge find_edge (basic_block pred, basic_block succ)
int find_edge_index (struct edge_list *edge_list, basic_block pred, basic_block succ)
void flow_nodes_print (const char *str, const sbitmap nodes, FILE *file)
void flow_edge_list_print (const char *str, const edge *edge_list, int num_edges, FILE *file)
static void remove_fake_predecessors (basic_block bb)
void remove_fake_edges (void)
void remove_fake_exit_edges (void)
void add_noreturn_fake_exit_edges (void)
void connect_infinite_loops_to_exit (void)
int post_order_compute (int *post_order, bool include_entry_exit)
int pre_and_rev_post_order_compute (int *pre_order, int *rev_post_order, bool include_entry_exit)
int dfs_enumerate_from (basic_block bb, int reverse, bool(*predicate)(basic_block, void *), basic_block *rslt, int rslt_max, void *data)
static void compute_dominance_frontiers_1 (bitmap *frontiers)
void compute_dominance_frontiers (bitmap *frontiers)


Define Documentation

#define MARK_VISITED ( BB   )     (SET_BIT (visited, (BB)->index))

#define UNMARK_VISITED ( BB   )     (RESET_BIT (visited, (BB)->index))

Referenced by dfs_enumerate_from().

#define VISITED_P ( BB   )     (TEST_BIT (visited, (BB)->index))


Typedef Documentation

Definition at line 49 of file cfganal.c.


Function Documentation

void add_noreturn_fake_exit_edges ( void   ) 

bool can_fallthru ( basic_block  src,
basic_block  target 
)

void compute_dominance_frontiers ( bitmap frontiers  ) 

Definition at line 1071 of file cfganal.c.

References compute_dominance_frontiers_1(), timevar_pop, and timevar_push.

static void compute_dominance_frontiers_1 ( bitmap frontiers  )  [static]

void connect_infinite_loops_to_exit ( void   ) 

bool could_fall_through ( basic_block  src,
basic_block  target 
)

Definition at line 133 of file cfganal.c.

References edge::dest, EDGE_FALLTHRU, EXIT_BLOCK_PTR, edge::flags, and FOR_EACH_EDGE.

Referenced by fixup_reorder_chain().

struct edge_list* create_edge_list ( void   )  [read]

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

edge find_edge ( basic_block  pred,
basic_block  succ 
)

Definition at line 482 of file cfganal.c.

References edge::dest, EDGE_COUNT, FOR_EACH_EDGE, NULL, and edge::src.

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

Definition at line 507 of file cfganal.c.

References EDGE_INDEX_NO_EDGE, INDEX_EDGE_PRED_BB, INDEX_EDGE_SUCC_BB, NUM_EDGES, and x.

void find_unreachable_blocks ( void   ) 

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_FUNCTION_VALUE_P, REG_P, and XEXP.

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,
basic_block  last_unvisited 
) [static]

static void flow_dfs_compute_reverse_finish ( depth_first_search_ds  data  )  [static]

static void flow_dfs_compute_reverse_init ( depth_first_search_ds  data  )  [static]

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

Definition at line 539 of file cfganal.c.

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

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

Definition at line 522 of file cfganal.c.

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

bool forwarder_block_p ( basic_block  bb  ) 

void free_edge_list ( struct edge_list elist  ) 

Definition at line 377 of file cfganal.c.

References free(), and edge_list::index_to_edge.

bool mark_dfs_back_edges ( void   ) 

int post_order_compute ( int *  post_order,
bool  include_entry_exit 
)

int pre_and_rev_post_order_compute ( int *  pre_order,
int *  rev_post_order,
bool  include_entry_exit 
)

void print_edge_list ( FILE f,
struct edge_list elist 
)

void remove_fake_edges ( void   ) 

void remove_fake_exit_edges ( void   ) 

static void remove_fake_predecessors ( basic_block  bb  )  [static]

Definition at line 560 of file cfganal.c.

References EDGE_FAKE, ei_next(), ei_safe_edge(), ei_start, edge::flags, and remove_edge().

void set_edge_can_fallthru_flag ( void   ) 

void verify_edge_list ( FILE f,
struct edge_list elist 
)


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