re PR rtl-optimization/13024 (gcj can't build current rhug)

PR optimization/13024
* toplev.c (rest_of_handle_new_regalloc): Remove rebuild_notes
parameter.
(rest_of_handle_old_regalloc): Likewise.  Add rebuild_notes
declaration.  Rebuild jump labels following local_alloc if necessary.
(rest_of_compilation): Remove rebuild_label_notes_after_reload
declaration.  Don't pass rebuild_notes parameter to
rest_of_handle_new_regalloc and rest_of_handle_old_regalloc.
Don't rebuild jump labels.

From-SVN: r74113
This commit is contained in:
Jeff Sturm 2003-12-01 17:53:10 +00:00 committed by Jeff Sturm
parent 095c3bbdbb
commit fccab17ead
2 changed files with 33 additions and 24 deletions

View File

@ -1,3 +1,15 @@
2003-12-01 Jeff Sturm <jsturm@one-point.com>
PR optimization/13024
* toplev.c (rest_of_handle_new_regalloc): Remove rebuild_notes
parameter.
(rest_of_handle_old_regalloc): Likewise. Add rebuild_notes
declaration. Rebuild jump labels following local_alloc if necessary.
(rest_of_compilation): Remove rebuild_label_notes_after_reload
declaration. Don't pass rebuild_notes parameter to
rest_of_handle_new_regalloc and rest_of_handle_old_regalloc.
Don't rebuild jump labels.
2003-12-01 Jeff Law <law@redhat.com> 2003-12-01 Jeff Law <law@redhat.com>
* flow.c (count_or_remove_death_notes_bb): New. Extracted from * flow.c (count_or_remove_death_notes_bb): New. Extracted from

View File

@ -146,8 +146,8 @@ static void rest_of_handle_regmove (tree, rtx);
static void rest_of_handle_sched (tree, rtx); static void rest_of_handle_sched (tree, rtx);
static void rest_of_handle_sched2 (tree, rtx); static void rest_of_handle_sched2 (tree, rtx);
#endif #endif
static bool rest_of_handle_new_regalloc (tree, rtx, int *); static bool rest_of_handle_new_regalloc (tree, rtx);
static bool rest_of_handle_old_regalloc (tree, rtx, int *); static bool rest_of_handle_old_regalloc (tree, rtx);
static void rest_of_handle_regrename (tree, rtx); static void rest_of_handle_regrename (tree, rtx);
static void rest_of_handle_reorder_blocks (tree, rtx); static void rest_of_handle_reorder_blocks (tree, rtx);
#ifdef STACK_REGS #ifdef STACK_REGS
@ -2166,7 +2166,7 @@ rest_of_handle_machine_reorg (tree decl, rtx insns)
/* Run new register allocator. Return TRUE if we must exit /* Run new register allocator. Return TRUE if we must exit
rest_of_compilation upon return. */ rest_of_compilation upon return. */
static bool static bool
rest_of_handle_new_regalloc (tree decl, rtx insns, int *rebuild_notes) rest_of_handle_new_regalloc (tree decl, rtx insns)
{ {
int failure; int failure;
@ -2205,7 +2205,6 @@ rest_of_handle_new_regalloc (tree decl, rtx insns, int *rebuild_notes)
return true; return true;
reload_completed = 1; reload_completed = 1;
*rebuild_notes = 0;
return false; return false;
} }
@ -2213,9 +2212,10 @@ rest_of_handle_new_regalloc (tree decl, rtx insns, int *rebuild_notes)
/* Run old register allocator. Return TRUE if we must exit /* Run old register allocator. Return TRUE if we must exit
rest_of_compilation upon return. */ rest_of_compilation upon return. */
static bool static bool
rest_of_handle_old_regalloc (tree decl, rtx insns, int *rebuild_notes) rest_of_handle_old_regalloc (tree decl, rtx insns)
{ {
int failure; int failure;
int rebuild_notes;
/* Allocate the reg_renumber array. */ /* Allocate the reg_renumber array. */
allocate_reg_info (max_regno, FALSE, TRUE); allocate_reg_info (max_regno, FALSE, TRUE);
@ -2226,10 +2226,23 @@ rest_of_handle_old_regalloc (tree decl, rtx insns, int *rebuild_notes)
allocate_initial_values (reg_equiv_memory_loc); allocate_initial_values (reg_equiv_memory_loc);
regclass (insns, max_reg_num (), rtl_dump_file); regclass (insns, max_reg_num (), rtl_dump_file);
*rebuild_notes = local_alloc (); rebuild_notes = local_alloc ();
timevar_pop (TV_LOCAL_ALLOC); timevar_pop (TV_LOCAL_ALLOC);
/* Local allocation may have turned an indirect jump into a direct
jump. If so, we must rebuild the JUMP_LABEL fields of jumping
instructions. */
if (rebuild_notes)
{
timevar_push (TV_JUMP);
rebuild_jump_labels (insns);
purge_all_dead_edges (0);
timevar_pop (TV_JUMP);
}
if (dump_file[DFI_lreg].enabled) if (dump_file[DFI_lreg].enabled)
{ {
timevar_push (TV_DUMP); timevar_push (TV_DUMP);
@ -3056,7 +3069,6 @@ void
rest_of_compilation (tree decl) rest_of_compilation (tree decl)
{ {
rtx insns; rtx insns;
int rebuild_label_notes_after_reload;
timevar_push (TV_REST_OF_COMPILATION); timevar_push (TV_REST_OF_COMPILATION);
@ -3360,14 +3372,12 @@ rest_of_compilation (tree decl)
if (flag_new_regalloc) if (flag_new_regalloc)
{ {
if (rest_of_handle_new_regalloc (decl, insns, if (rest_of_handle_new_regalloc (decl, insns))
&rebuild_label_notes_after_reload))
goto exit_rest_of_compilation; goto exit_rest_of_compilation;
} }
else else
{ {
if (rest_of_handle_old_regalloc (decl, insns, if (rest_of_handle_old_regalloc (decl, insns))
&rebuild_label_notes_after_reload))
goto exit_rest_of_compilation; goto exit_rest_of_compilation;
} }
@ -3383,19 +3393,6 @@ rest_of_compilation (tree decl)
timevar_pop (TV_RELOAD_CSE_REGS); timevar_pop (TV_RELOAD_CSE_REGS);
} }
/* Register allocation and reloading may have turned an indirect jump into
a direct jump. If so, we must rebuild the JUMP_LABEL fields of
jumping instructions. */
if (rebuild_label_notes_after_reload)
{
timevar_push (TV_JUMP);
rebuild_jump_labels (insns);
purge_all_dead_edges (0);
timevar_pop (TV_JUMP);
}
close_dump_file (DFI_postreload, print_rtl_with_bb, insns); close_dump_file (DFI_postreload, print_rtl_with_bb, insns);
/* Re-create the death notes which were deleted during reload. */ /* Re-create the death notes which were deleted during reload. */