Mercurial > hg > CbC > CbC_gcc
diff gcc/basic-block.h @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | b7f97abdc517 |
children | 04ced10e8804 |
line wrap: on
line diff
--- a/gcc/basic-block.h Tue May 25 18:58:51 2010 +0900 +++ b/gcc/basic-block.h Tue Mar 22 17:18:12 2011 +0900 @@ -99,7 +99,6 @@ struct loop; /* Declared in tree-flow.h. */ -struct edge_prediction; struct rtl_bb_info; /* A basic block is a sequence of instructions with only entry and @@ -246,7 +245,13 @@ /* Set on blocks that cannot be threaded through. Only used in cfgcleanup.c. */ - BB_NONTHREADABLE_BLOCK = 1 << 11 + BB_NONTHREADABLE_BLOCK = 1 << 11, + + /* Set on blocks that were modified in some way. This bit is set in + df_set_bb_dirty, but not cleared by df_analyze, so it can be used + to test whether a block has been modified prior to a df_analyze + call. */ + BB_MODIFIED = 1 << 12 }; /* Dummy flag for convenience in the hot/cold partitioning code. */ @@ -303,6 +308,9 @@ /* The first free basic block number. */ int x_last_basic_block; + /* UIDs for LABEL_DECLs. */ + int last_label_uid; + /* Mapping of labels to their associated blocks. At present only used for the gimple CFG. */ VEC(basic_block,gc) *x_label_to_block_map; @@ -318,9 +326,6 @@ /* Maximal number of entities in the single jumptable. Used to estimate final flowgraph size. */ int max_jumptable_ents; - - /* UIDs for LABEL_DECLs. */ - int last_label_uid; }; /* Defines for accessing the fields of the CFG structure for function FN. */ @@ -443,8 +448,8 @@ extern int dfs_enumerate_from (basic_block, int, bool (*)(const_basic_block, const void *), basic_block *, int, const void *); -extern void compute_dominance_frontiers (bitmap *); -extern bitmap compute_idf (bitmap, bitmap *); +extern void compute_dominance_frontiers (struct bitmap_head_def *); +extern bitmap compute_idf (bitmap, struct bitmap_head_def *); extern void dump_bb_info (basic_block, bool, bool, int, const char *, FILE *); extern void dump_edge_info (FILE *, edge, int); extern void brief_dump_cfg (FILE *); @@ -554,7 +559,7 @@ static inline edge single_succ_edge (const_basic_block bb) { - gcc_assert (single_succ_p (bb)); + gcc_checking_assert (single_succ_p (bb)); return EDGE_SUCC (bb, 0); } @@ -564,7 +569,7 @@ static inline edge single_pred_edge (const_basic_block bb) { - gcc_assert (single_pred_p (bb)); + gcc_checking_assert (single_pred_p (bb)); return EDGE_PRED (bb, 0); } @@ -596,7 +601,7 @@ static inline VEC(edge,gc) * ei_container (edge_iterator i) { - gcc_assert (i.container); + gcc_checking_assert (i.container); return *i.container; } @@ -647,7 +652,7 @@ static inline void ei_next (edge_iterator *i) { - gcc_assert (i->index < EDGE_COUNT (ei_container (*i))); + gcc_checking_assert (i->index < EDGE_COUNT (ei_container (*i))); i->index++; } @@ -655,7 +660,7 @@ static inline void ei_prev (edge_iterator *i) { - gcc_assert (i->index > 0); + gcc_checking_assert (i->index > 0); i->index--; } @@ -749,8 +754,6 @@ extern bool optimize_bb_for_speed_p (const_basic_block); extern bool optimize_edge_for_size_p (edge); extern bool optimize_edge_for_speed_p (edge); -extern bool optimize_function_for_size_p (struct function *); -extern bool optimize_function_for_speed_p (struct function *); extern bool optimize_loop_for_size_p (struct loop *); extern bool optimize_loop_for_speed_p (struct loop *); extern bool optimize_loop_nest_for_size_p (struct loop *); @@ -775,11 +778,9 @@ extern void unlink_block (basic_block); extern void compact_blocks (void); extern basic_block alloc_block (void); -extern void alloc_aux_for_block (basic_block, int); extern void alloc_aux_for_blocks (int); extern void clear_aux_for_blocks (void); extern void free_aux_for_blocks (void); -extern void alloc_aux_for_edge (edge, int); extern void alloc_aux_for_edges (int); extern void clear_aux_for_edges (void); extern void free_aux_for_edges (void); @@ -846,6 +847,8 @@ extern VEC (basic_block, heap) *get_dominated_by_region (enum cdi_direction, basic_block *, unsigned); +extern VEC (basic_block, heap) *get_dominated_to_depth (enum cdi_direction, + basic_block, int); extern VEC (basic_block, heap) *get_all_dominated_blocks (enum cdi_direction, basic_block); extern void add_to_dominance_info (enum cdi_direction, basic_block); @@ -877,9 +880,6 @@ void set_loop_copy (struct loop *, struct loop *); struct loop *get_loop_copy (struct loop *); - -extern rtx insert_insn_end_bb_new (rtx, basic_block); - #include "cfghooks.h" /* Return true when one of the predecessor edges of BB is marked with EDGE_EH. */ @@ -912,6 +912,20 @@ return false; } +/* Return the fallthru edge in EDGES if it exists, NULL otherwise. */ +static inline edge +find_fallthru_edge (VEC(edge,gc) *edges) +{ + edge e; + edge_iterator ei; + + FOR_EACH_EDGE (e, ei, edges) + if (e->flags & EDGE_FALLTHRU) + break; + + return e; +} + /* In cfgloopmanip.c. */ extern edge mfb_kj_edge; extern bool mfb_keep_just (edge);