OSDN Git Service

2006-07-25 Paolo Bonzini <bonzini@gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / basic-block.h
index e8e08a0..a252ccc 100644 (file)
@@ -414,10 +414,6 @@ struct control_flow_graph GTY(())
 #define BASIC_BLOCK(N)         (VEC_index (basic_block, basic_block_info, (N)))
 #define SET_BASIC_BLOCK(N,BB)  (VEC_replace (basic_block, basic_block_info, (N), (BB)))
 
-/* TRUE if we should re-run loop discovery after threading jumps, FALSE
-   otherwise.  */
-extern bool rediscover_loops_after_threading;
-
 /* For iterating over basic blocks.  */
 #define FOR_BB_BETWEEN(BB, FROM, TO, DIR) \
   for (BB = FROM; BB != TO; BB = BB->DIR)
@@ -464,7 +460,8 @@ extern bitmap_obstack reg_obstack;
 #define REG_BLOCK_UNKNOWN -1
 #define REG_BLOCK_GLOBAL -2
 
-#define REG_BASIC_BLOCK(N) (VARRAY_REG (reg_n_info, N)->basic_block)
+#define REG_BASIC_BLOCK(N)                             \
+  (VEC_index (reg_info_p, reg_n_info, N)->basic_block)
 \f
 /* Stuff for recording basic block info.  */
 
@@ -489,7 +486,6 @@ extern void update_bb_for_insn (basic_block);
 extern void free_basic_block_vars (void);
 
 extern void insert_insn_on_edge (rtx, edge);
-bool safe_insert_insn_on_edge (rtx, edge);
 
 extern void commit_edge_insertions (void);
 extern void commit_edge_insertions_watch_calls (void);
@@ -520,7 +516,7 @@ extern void brief_dump_cfg (FILE *);
 extern void clear_edges (void);
 extern rtx first_insn_after_basic_block_note (basic_block);
 extern void scale_bbs_frequencies_int (basic_block *, int, int, int);
-extern void scale_bbs_frequencies_gcov_type (basic_block *, int, gcov_type, 
+extern void scale_bbs_frequencies_gcov_type (basic_block *, int, gcov_type,
                                             gcov_type);
 
 /* Structure to group all of the information to process IF-THEN and
@@ -769,7 +765,7 @@ ei_cond (edge_iterator ei, edge *p)
    an element might be removed during the traversal, otherwise
    elements will be missed.  Instead, use a for-loop like that shown
    in the following pseudo-code:
-   
+
    FOR (ei = ei_start (bb->succs); (e = ei_safe_edge (ei)); )
      {
        IF (e != taken_edge)
@@ -832,25 +828,23 @@ enum update_life_extent
 #define CLEANUP_CROSSJUMP      2       /* Do crossjumping.  */
 #define CLEANUP_POST_REGSTACK  4       /* We run after reg-stack and need
                                           to care REG_DEAD notes.  */
-#define CLEANUP_PRE_LOOP       8       /* Take care to preserve syntactic loop
-                                          notes.  */
-#define CLEANUP_UPDATE_LIFE    16      /* Keep life information up to date.  */
-#define CLEANUP_THREADING      32      /* Do jump threading.  */
-#define CLEANUP_NO_INSN_DEL    64      /* Do not try to delete trivially dead
+#define CLEANUP_UPDATE_LIFE    8       /* Keep life information up to date.  */
+#define CLEANUP_THREADING      16      /* Do jump threading.  */
+#define CLEANUP_NO_INSN_DEL    32      /* Do not try to delete trivially dead
                                           insns.  */
-#define CLEANUP_CFGLAYOUT      128     /* Do cleanup in cfglayout mode.  */
-#define CLEANUP_LOG_LINKS      256     /* Update log links.  */
+#define CLEANUP_CFGLAYOUT      64      /* Do cleanup in cfglayout mode.  */
+#define CLEANUP_LOG_LINKS      128     /* Update log links.  */
 
 /* The following are ORed in on top of the CLEANUP* flags in calls to
    struct_equiv_block_eq.  */
-#define STRUCT_EQUIV_START     512      /* Initializes the search range.  */
-#define STRUCT_EQUIV_RERUN     1024    /* Rerun to find register use in
+#define STRUCT_EQUIV_START     256      /* Initializes the search range.  */
+#define STRUCT_EQUIV_RERUN     512     /* Rerun to find register use in
                                           found equivalence.  */
-#define STRUCT_EQUIV_FINAL     2048    /* Make any changes necessary to get
+#define STRUCT_EQUIV_FINAL     1024    /* Make any changes necessary to get
                                           actual equivalence.  */
-#define STRUCT_EQUIV_NEED_FULL_BLOCK 4096 /* struct_equiv_block_eq is required
+#define STRUCT_EQUIV_NEED_FULL_BLOCK 2048 /* struct_equiv_block_eq is required
                                             to match only full blocks  */
-#define STRUCT_EQUIV_MATCH_JUMPS 8192  /* Also include the jumps at the end of the block in the comparison.  */
+#define STRUCT_EQUIV_MATCH_JUMPS 4096  /* Also include the jumps at the end of the block in the comparison.  */
 
 extern void life_analysis (int);
 extern int update_life_info (sbitmap, enum update_life_extent, int);
@@ -875,7 +869,6 @@ extern struct edge_list *pre_edge_rev_lcm (int, sbitmap *,
 extern void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *);
 
 /* In predict.c */
-extern void estimate_probability (struct loops *);
 extern void expected_value_to_br_prob (void);
 extern bool maybe_hot_bb_p (basic_block);
 extern bool probably_cold_bb_p (basic_block);
@@ -977,7 +970,7 @@ extern void calculate_dominance_info (enum cdi_direction);
 extern void free_dominance_info (enum cdi_direction);
 extern basic_block nearest_common_dominator (enum cdi_direction,
                                             basic_block, basic_block);
-extern basic_block nearest_common_dominator_for_set (enum cdi_direction, 
+extern basic_block nearest_common_dominator_for_set (enum cdi_direction,
                                                     bitmap);
 extern void set_immediate_dominator (enum cdi_direction, basic_block,
                                     basic_block);
@@ -1008,6 +1001,8 @@ extern basic_block get_bb_original (basic_block);
 extern void set_bb_copy (basic_block, basic_block);
 extern basic_block get_bb_copy (basic_block);
 
+extern rtx insert_insn_end_bb_new (rtx, basic_block);
+
 #include "cfghooks.h"
 
 /* In struct-equiv.c */