Commit 673b5311 by Mark Mitchell Committed by Mark Mitchell

flags.h (flag_renumber_insns): Declare.

	* flags.h (flag_renumber_insns): Declare.
	* emit-rtl.c (renumber_insns): Check flag_renumber_insns.  Print
	renumbering table.
	* rtl.h (renumber_insns): Change prototype.
	* toplev.c (flag_renumber_insns): Define.
	(rest_of_compilation): Pass rtl_dump_file to flag_renumber_insns.

From-SVN: r30388
parent d2119539
Wed Nov 3 23:05:14 1999 Mark Mitchell <mark@codesourcery.com>
* flags.h (flag_renumber_insns): Declare.
* emit-rtl.c (renumber_insns): Check flag_renumber_insns. Print
renumbering table.
* rtl.h (renumber_insns): Change prototype.
* toplev.c (flag_renumber_insns): Define.
(rest_of_compilation): Pass rtl_dump_file to flag_renumber_insns.
Wed Nov 3 15:11:27 1999 David S. Miller <davem@redhat.com> Wed Nov 3 15:11:27 1999 David S. Miller <davem@redhat.com>
* config/sparc/sparc.md: Remove insn type fpsqrt, add fpsqrts * config/sparc/sparc.md: Remove insn type fpsqrt, add fpsqrts
......
...@@ -1898,21 +1898,33 @@ get_max_uid () ...@@ -1898,21 +1898,33 @@ get_max_uid ()
return cur_insn_uid; return cur_insn_uid;
} }
/* Renumber instructions so that no instruction UIDs are wasted. */
void void
renumber_insns () renumber_insns (stream)
FILE *stream;
{ {
rtx insn; rtx insn;
int old_max_uid = cur_insn_uid; int old_max_uid = cur_insn_uid;
/* If we're not supposed to renumber instructions, don't. */
if (!flag_renumber_insns)
return;
/* If there aren't that many instructions, then it's not really /* If there aren't that many instructions, then it's not really
worth renumbering them. */ worth renumbering them. */
if (get_max_uid () < 25000) if (flag_renumber_insns == 1 && get_max_uid () < 25000)
return; return;
cur_insn_uid = 1; cur_insn_uid = 1;
for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
INSN_UID (insn) = cur_insn_uid++; {
if (stream)
fprintf (stream, "Renumbering insn %d to %d\n",
INSN_UID (insn), cur_insn_uid);
INSN_UID (insn) = cur_insn_uid++;
}
} }
/* Return the next insn. If it is a SEQUENCE, return the first insn /* Return the next insn. If it is a SEQUENCE, return the first insn
...@@ -2593,7 +2605,6 @@ remove_unncessary_notes () ...@@ -2593,7 +2605,6 @@ remove_unncessary_notes ()
{ {
rtx insn; rtx insn;
rtx next; rtx next;
varray_type block_stack;
/* Remove NOTE_INSN_DELETED notes. We must not remove the first /* Remove NOTE_INSN_DELETED notes. We must not remove the first
instruction in the function because the compiler depends on the instruction in the function because the compiler depends on the
......
...@@ -495,6 +495,11 @@ extern int flag_bounded_pointers; ...@@ -495,6 +495,11 @@ extern int flag_bounded_pointers;
For Fortran: defaults to off. For Fortran: defaults to off.
For CHILL: defaults to off. */ For CHILL: defaults to off. */
extern int flag_bounds_check; extern int flag_bounds_check;
/* If one, renumber instruction UIDs to reduce the number of
unused UIDs if there are a lot of instructions. If greater than
one, unconditionally renumber instruction UIDs. */
extern int flag_renumber_insns;
/* Other basic status info about current function. */ /* Other basic status info about current function. */
......
...@@ -1460,7 +1460,7 @@ extern rtx emit PROTO ((rtx)); ...@@ -1460,7 +1460,7 @@ extern rtx emit PROTO ((rtx));
warnings about unreachable code. */ warnings about unreachable code. */
int force_line_numbers PROTO((void)); int force_line_numbers PROTO((void));
void restore_line_number_status PROTO((int old_value)); void restore_line_number_status PROTO((int old_value));
extern void renumber_insns PROTO ((void)); extern void renumber_insns PROTO ((FILE *));
extern void remove_unncessary_notes PROTO ((void)); extern void remove_unncessary_notes PROTO ((void));
/* In insn-emit.c */ /* In insn-emit.c */
......
...@@ -771,6 +771,11 @@ int flag_bounded_pointers = 0; ...@@ -771,6 +771,11 @@ int flag_bounded_pointers = 0;
For CHILL: defaults to off. */ For CHILL: defaults to off. */
int flag_bounds_check = 0; int flag_bounds_check = 0;
/* If one, renumber instruction UIDs to reduce the number of
unused UIDs if there are a lot of instructions. If greater than
one, unconditionally renumber instruction UIDs. */
int flag_renumber_insns = 1;
/* Values of the -falign-* flags: how much to align labels in code. /* Values of the -falign-* flags: how much to align labels in code.
0 means `use default', 1 means `don't align'. 0 means `use default', 1 means `don't align'.
For each variable, there is an _log variant which is the power For each variable, there is an _log variant which is the power
...@@ -3776,6 +3781,17 @@ rest_of_compilation (decl) ...@@ -3776,6 +3781,17 @@ rest_of_compilation (decl)
TIMEVAR (jump_time, jump_optimize (insns, !JUMP_CROSS_JUMP, !JUMP_NOOP_MOVES, TIMEVAR (jump_time, jump_optimize (insns, !JUMP_CROSS_JUMP, !JUMP_NOOP_MOVES,
JUMP_AFTER_REGSCAN)); JUMP_AFTER_REGSCAN));
/* Jump optimization, and the removal of NULL pointer checks, may
have reduced the number of instructions substantially. CSE, and
future passes, allocate arrays whose dimensions involve the maximum
instruction UID, so if we can reduce the maximum UID we'll save big on
memory. */
renumber_insns (rtl_dump_file);
/* Dump rtl code after jump, if we are doing that. */
if (jump_opt_dump)
close_dump_file (print_rtl, insns);
/* Now is when we stop if -fsyntax-only and -Wreturn-type. */ /* Now is when we stop if -fsyntax-only and -Wreturn-type. */
if (rtl_dump_and_exit || flag_syntax_only || DECL_DEFER_OUTPUT (decl)) if (rtl_dump_and_exit || flag_syntax_only || DECL_DEFER_OUTPUT (decl))
goto exit_rest_of_compilation; goto exit_rest_of_compilation;
...@@ -3784,20 +3800,9 @@ rest_of_compilation (decl) ...@@ -3784,20 +3800,9 @@ rest_of_compilation (decl)
if (flag_delete_null_pointer_checks) if (flag_delete_null_pointer_checks)
TIMEVAR (jump_time, delete_null_pointer_checks (get_insns ())); TIMEVAR (jump_time, delete_null_pointer_checks (get_insns ()));
/* Dump rtl code after jump, if we are doing that. */
if (jump_opt_dump)
close_dump_file (print_rtl, insns);
if (ggc_p) if (ggc_p)
ggc_collect (); ggc_collect ();
/* Jump optimization, and the removal of NULL pointer checks, may
have reduced the number of instructions substantially. CSE, and
future passes, allocate arrays whose dimensions involve the maximum
instruction UID, so if we can reduce the maximum UID we'll save big on
memory. */
renumber_insns ();
/* Perform common subexpression elimination. /* Perform common subexpression elimination.
Nonzero value from `cse_main' means that jumps were simplified Nonzero value from `cse_main' means that jumps were simplified
and some code may now be unreachable, so do and some code may now be unreachable, so do
...@@ -3832,18 +3837,17 @@ rest_of_compilation (decl) ...@@ -3832,18 +3837,17 @@ rest_of_compilation (decl)
if (flag_delete_null_pointer_checks) if (flag_delete_null_pointer_checks)
TIMEVAR (jump_time, delete_null_pointer_checks (get_insns ())); TIMEVAR (jump_time, delete_null_pointer_checks (get_insns ()));
/* Dump rtl code after cse, if we are doing that. */ /* The second pass of jump optimization is likely to have
removed a bunch more instructions. */
renumber_insns (rtl_dump_file);
/* Dump rtl code after cse, if we are doing that. */
if (cse_dump) if (cse_dump)
{ {
close_dump_file (print_rtl, insns); close_dump_file (print_rtl, insns);
if (graph_dump_format != no_graph) if (graph_dump_format != no_graph)
print_rtl_graph_with_bb (dump_base_name, ".02.cse", insns); print_rtl_graph_with_bb (dump_base_name, ".02.cse", insns);
} }
/* The second pass of jump optimization is likely to have
removed a bunch more instructions. */
renumber_insns ();
} }
purge_addressof (insns); purge_addressof (insns);
...@@ -3970,7 +3974,6 @@ rest_of_compilation (decl) ...@@ -3970,7 +3974,6 @@ rest_of_compilation (decl)
} }
/* Dump rtl code after cse, if we are doing that. */ /* Dump rtl code after cse, if we are doing that. */
if (cse2_dump) if (cse2_dump)
{ {
close_dump_file (print_rtl, insns); close_dump_file (print_rtl, insns);
......
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