cfgrtl.c (purge_dead_edges): Set BB_DRITY flags if edge has been removed; fix return value.
* cfgrtl.c (purge_dead_edges): Set BB_DRITY flags if edge has been removed; fix return value. * combine.c (combine_instructions): Dirtify blocks where we failed to update liveness; purge dead edges; use update_life_info_in_dirty_blocks. * toplev.c (rest_of_compilation): Do not purge_dead_edges after combine. From-SVN: r50454
This commit is contained in:
parent
3b25fbfeaf
commit
c51d95ecef
|
@ -1,3 +1,11 @@
|
|||
Fri Mar 8 21:27:49 CET 2002 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* cfgrtl.c (purge_dead_edges): Set BB_DRITY flags if edge has been
|
||||
removed; fix return value.
|
||||
* combine.c (combine_instructions): Dirtify blocks where we failed to
|
||||
update liveness; purge dead edges; use update_life_info_in_dirty_blocks.
|
||||
* toplev.c (rest_of_compilation): Do not purge_dead_edges after combine.
|
||||
|
||||
2002-03-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* gcse.c (insert_insn_end_bb): Fix typo in last change.
|
||||
|
|
12
gcc/cfgrtl.c
12
gcc/cfgrtl.c
|
@ -2108,6 +2108,7 @@ purge_dead_edges (bb)
|
|||
if (e->flags & EDGE_EH)
|
||||
{
|
||||
remove_edge (e);
|
||||
bb->flags |= BB_DIRTY;
|
||||
purged = true;
|
||||
}
|
||||
}
|
||||
|
@ -2121,7 +2122,7 @@ purge_dead_edges (bb)
|
|||
if (!any_condjump_p (insn)
|
||||
&& !returnjump_p (insn)
|
||||
&& !simplejump_p (insn))
|
||||
return false;
|
||||
return purged;
|
||||
|
||||
/* Branch probability/prediction notes are defined only for
|
||||
condjumps. We've possibly turned condjump into simplejump. */
|
||||
|
@ -2154,12 +2155,13 @@ purge_dead_edges (bb)
|
|||
&& returnjump_p (insn))
|
||||
continue;
|
||||
|
||||
bb->flags |= BB_DIRTY;
|
||||
purged = true;
|
||||
remove_edge (e);
|
||||
}
|
||||
|
||||
if (!bb->succ || !purged)
|
||||
return false;
|
||||
return purged;
|
||||
|
||||
if (rtl_dump_file)
|
||||
fprintf (rtl_dump_file, "Purged edges from bb %i\n", bb->index);
|
||||
|
@ -2206,7 +2208,11 @@ purge_dead_edges (bb)
|
|||
{
|
||||
next = e->succ_next;
|
||||
if (!(e->flags & EDGE_FALLTHRU))
|
||||
remove_edge (e), purged = true;
|
||||
{
|
||||
bb->flags |= BB_DIRTY;
|
||||
remove_edge (e);
|
||||
purged = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!bb->succ || bb->succ->succ_next)
|
||||
|
|
|
@ -739,14 +739,16 @@ combine_instructions (f, nregs)
|
|||
;
|
||||
}
|
||||
}
|
||||
clear_bb_flags ();
|
||||
|
||||
EXECUTE_IF_SET_IN_SBITMAP (refresh_blocks, 0, this_basic_block,
|
||||
BASIC_BLOCK (this_basic_block)->flags |= BB_DIRTY);
|
||||
new_direct_jump_p |= purge_all_dead_edges (0);
|
||||
delete_noop_moves (f);
|
||||
|
||||
if (need_refresh)
|
||||
{
|
||||
update_life_info (refresh_blocks, UPDATE_LIFE_GLOBAL_RM_NOTES,
|
||||
PROP_DEATH_NOTES);
|
||||
}
|
||||
update_life_info_in_dirty_blocks (UPDATE_LIFE_GLOBAL_RM_NOTES,
|
||||
PROP_DEATH_NOTES | PROP_SCAN_DEAD_CODE
|
||||
| PROP_KILL_DEAD_CODE);
|
||||
|
||||
/* Clean up. */
|
||||
sbitmap_free (refresh_blocks);
|
||||
|
|
|
@ -3058,10 +3058,6 @@ rest_of_compilation (decl)
|
|||
rebuild_jump_labels_after_combine
|
||||
= combine_instructions (insns, max_reg_num ());
|
||||
|
||||
/* Always purge dead edges, as we may eliminate an insn throwing
|
||||
exception. */
|
||||
rebuild_jump_labels_after_combine |= purge_all_dead_edges (true);
|
||||
|
||||
/* Combining insns may have turned an indirect jump into a
|
||||
direct jump. Rebuid the JUMP_LABEL fields of jumping
|
||||
instructions. */
|
||||
|
|
Loading…
Reference in New Issue