+2001-06-22 Diego Novillo <dnovillo@redhat.com>
+
+ * basic-block.h (dump_edge_info): Declare.
+ (clear_edges): Declare.
+ (mark_critical_edges): Declare.
+ * flow.c (dump_edge_info): Remove static declaration.
+ (clear_edges): Ditto.
+ (mark_critical_edges): Ditto.
+ (free_basic_block_vars): Only clear edges and free basic block
+ array if basic_block_info is not NULL.
+ * ssa.c (compute_dominance_frontiers): Remove static declaration.
+ * ssa.h (compute_dominance_frontiers): Declare.
+
2001-06-22 Toshiyasu Morita (toshiyasu.morita@hsa.hitachi.com)
* predict.c: (expected_value_to_br_prob): Check for const_true_rtx
extern void merge_blocks_nomove PARAMS ((basic_block, basic_block));
extern void tidy_fallthru_edge PARAMS ((edge, basic_block,
basic_block));
+extern void dump_edge_info PARAMS ((FILE *, edge, int));
+extern void clear_edges PARAMS ((void));
+extern void mark_critical_edges PARAMS ((void));
/* Structure to hold information for each natural loop. */
struct loop
static int count_basic_blocks PARAMS ((rtx));
static void find_basic_blocks_1 PARAMS ((rtx));
static rtx find_label_refs PARAMS ((rtx, rtx));
-static void clear_edges PARAMS ((void));
static void make_edges PARAMS ((rtx));
static void make_label_edge PARAMS ((sbitmap *, basic_block,
rtx, int));
static void make_eh_edge PARAMS ((sbitmap *, basic_block, rtx));
-static void mark_critical_edges PARAMS ((void));
static void commit_one_edge_insertion PARAMS ((edge));
rtx, rtx, rtx));
void dump_flow_info PARAMS ((FILE *));
void debug_flow_info PARAMS ((void));
-static void dump_edge_info PARAMS ((FILE *, edge, int));
static void print_rtl_and_abort_fcn PARAMS ((const char *, int,
const char *))
ATTRIBUTE_NORETURN;
/* Free the memory associated with the edge structures. */
-static void
+void
clear_edges ()
{
int i;
/* Identify critical edges and set the bits appropriately. */
-static void
+void
mark_critical_edges ()
{
int i, n = n_basic_blocks;
if (! keep_head_end_p)
{
- clear_edges ();
- VARRAY_FREE (basic_block_info);
+ if (basic_block_info)
+ {
+ clear_edges ();
+ VARRAY_FREE (basic_block_info);
+ }
n_basic_blocks = 0;
ENTRY_BLOCK_PTR->aux = NULL;
dump_flow_info (stderr);
}
-static void
+void
dump_edge_info (file, e, do_succ)
FILE *file;
edge e;
PARAMS ((basic_block));
static void compute_dominance_frontiers_1
PARAMS ((sbitmap *frontiers, int *idom, int bb, sbitmap done));
-static void compute_dominance_frontiers
- PARAMS ((sbitmap *frontiers, int *idom));
static void find_evaluations_1
PARAMS ((rtx dest, rtx set, void *data));
static void find_evaluations
}
}
-static void
+void
compute_dominance_frontiers (frontiers, idom)
sbitmap *frontiers;
int *idom;
extern int for_each_successor_phi PARAMS ((basic_block bb,
successor_phi_fn,
void *));
+void compute_dominance_frontiers PARAMS ((sbitmap *frontiers, int *idom));
extern int remove_phi_alternative PARAMS ((rtx, basic_block));