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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50454
138bc75d-0d04-0410-961f-
82ee72b054a4
+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.
if (e->flags & EDGE_EH)
{
remove_edge (e);
+ bb->flags |= BB_DIRTY;
purged = true;
}
}
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. */
&& 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);
{
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)
;
}
}
+ 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);
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. */