Commit 421382ac by Bernd Schmidt Committed by Jeff Law

flow.c (XNMALLOC): New macro.

	* flow.c (XNMALLOC): New macro.
	(flow_int_list_blocks, basic_block_succ, basic_block_pred): New
	static variables.
	(add_edge, add_edge_to_label): New static functions.
	(free_bb_memory): New function.
	(flow_delete_insn): Delete function.
	(basic_block_drops_in): Delete variable.
	(find_basic_blocks): Allocate and initialize basic_block_head,
	basic_block_succ.  Don't allocate basic_block_drops_in.
	Call free_bb_memory at the beginning.
	(find_basic_blocks_1): Don't do multiple passes.
	Delete code to compute basic_block_drops_in.
	After calling make_edges, mark blocks reached by current block live.
	Update test for unreachable live blocks.
	(mark_label_ref): Delete args X, CHECKDUP.  Add PRED arg.  All callers
	changed.
	Simplify to call add_edge_to_label when a LABEL_REF is found.
	(make_edges): Simplify to call add_edge_to_label instead of
	mark_label_ref most of the time.
	Compute here whether control drops into the next block.
	(delete_unreachable_blocks): Return void.  All callers changed.
	Delete unreachable blocks in reverse order.
	After deleting all unreachable blocks, renumber the remaining ones
	and update n_basic_blocks.
	(delete_block): Speed up deletion a bit.
	Don't set basic_block_drops_in for deleted blocks.
	(free_basic_block_vars): Don't free basic_block_drops_in.
	(life_analysis_1): Update to use new edge representation.
	(dump_flow_info): Delete code to print basic block info; call
	dump_bb_data instead.
	(compute_preds_succs): Delete code to recompute basic_block_drops_in
	and uid_block_number.
	Simply copy the previously computed cfg.
	(dump_bb_data): New arg LIVE_INFO.  All callers changed.
	Print register lifetime information if LIVE_INFO is nonzero.
	* basic-block.h (dump_bb_data): Adjust prototype.
	* gcse.c (gcse_main): Update call to dump_bb_data.
	* rtl.h (free_bb_memory): Declare.
	* toplev.c (rest_of_compilation): Call free_bb_memory.

From-SVN: r23443
parent 1f3b1e1a
Thu Oct 29 23:55:43 1998 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de> Thu Oct 29 23:55:43 1998 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* flow.c (XNMALLOC): New macro.
(flow_int_list_blocks, basic_block_succ, basic_block_pred): New
static variables.
(add_edge, add_edge_to_label): New static functions.
(free_bb_memory): New function.
(flow_delete_insn): Delete function.
(basic_block_drops_in): Delete variable.
(find_basic_blocks): Allocate and initialize basic_block_head,
basic_block_succ. Don't allocate basic_block_drops_in.
Call free_bb_memory at the beginning.
(find_basic_blocks_1): Don't do multiple passes.
Delete code to compute basic_block_drops_in.
After calling make_edges, mark blocks reached by current block live.
Update test for unreachable live blocks.
(mark_label_ref): Delete args X, CHECKDUP. Add PRED arg. All callers
changed.
Simplify to call add_edge_to_label when a LABEL_REF is found.
(make_edges): Simplify to call add_edge_to_label instead of
mark_label_ref most of the time.
Compute here whether control drops into the next block.
(delete_unreachable_blocks): Return void. All callers changed.
Delete unreachable blocks in reverse order.
After deleting all unreachable blocks, renumber the remaining ones
and update n_basic_blocks.
(delete_block): Speed up deletion a bit.
Don't set basic_block_drops_in for deleted blocks.
(free_basic_block_vars): Don't free basic_block_drops_in.
(life_analysis_1): Update to use new edge representation.
(dump_flow_info): Delete code to print basic block info; call
dump_bb_data instead.
(compute_preds_succs): Delete code to recompute basic_block_drops_in
and uid_block_number.
Simply copy the previously computed cfg.
(dump_bb_data): New arg LIVE_INFO. All callers changed.
Print register lifetime information if LIVE_INFO is nonzero.
* basic-block.h (dump_bb_data): Adjust prototype.
* gcse.c (gcse_main): Update call to dump_bb_data.
* rtl.h (free_bb_memory): Declare.
* toplev.c (rest_of_compilation): Call free_bb_memory.
* reload1.c (struct elim_table): Delete MAX_OFFSET member. * reload1.c (struct elim_table): Delete MAX_OFFSET member.
(update_eliminable_offsets): Don't compute it. (update_eliminable_offsets): Don't compute it.
(set_initial_elim_offsets): Don't initialize it. (set_initial_elim_offsets): Don't initialize it.
......
...@@ -190,7 +190,8 @@ extern int *uid_block_number; ...@@ -190,7 +190,8 @@ extern int *uid_block_number;
extern void compute_preds_succs PROTO ((int_list_ptr *, int_list_ptr *, extern void compute_preds_succs PROTO ((int_list_ptr *, int_list_ptr *,
int *, int *)); int *, int *));
extern void dump_bb_data PROTO ((FILE *, int_list_ptr *, int_list_ptr *)); extern void dump_bb_data PROTO ((FILE *, int_list_ptr *, int_list_ptr *,
int));
extern void free_bb_mem PROTO ((void)); extern void free_bb_mem PROTO ((void));
extern void free_basic_block_vars PROTO ((int)); extern void free_basic_block_vars PROTO ((int));
......
...@@ -700,9 +700,7 @@ gcse_main (f, file) ...@@ -700,9 +700,7 @@ gcse_main (f, file)
compute_preds_succs (s_preds, s_succs, num_preds, num_succs); compute_preds_succs (s_preds, s_succs, num_preds, num_succs);
if (file) if (file)
{ dump_bb_data (file, s_preds, s_succs, 0);
dump_bb_data (file, s_preds, s_succs);
}
/* Record where pseudo-registers are set. /* Record where pseudo-registers are set.
This data is kept accurate during each pass. This data is kept accurate during each pass.
......
...@@ -1374,6 +1374,7 @@ extern void recompute_reg_usage PROTO ((rtx)); ...@@ -1374,6 +1374,7 @@ extern void recompute_reg_usage PROTO ((rtx));
#ifdef BUFSIZ #ifdef BUFSIZ
extern void dump_flow_info PROTO ((FILE *)); extern void dump_flow_info PROTO ((FILE *));
#endif #endif
extern void free_bb_memory PROTO ((void));
/* In expmed.c */ /* In expmed.c */
extern void init_expmed PROTO ((void)); extern void init_expmed PROTO ((void));
......
...@@ -3951,6 +3951,8 @@ rest_of_compilation (decl) ...@@ -3951,6 +3951,8 @@ rest_of_compilation (decl)
exit_rest_of_compilation: exit_rest_of_compilation:
free_bb_memory ();
/* In case the function was not output, /* In case the function was not output,
don't leave any temporary anonymous types don't leave any temporary anonymous types
queued up for sdb output. */ queued up for sdb output. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment