cfgrtl.c (rtl_merge_blocks): Call maybe_remove_eh_handler on labels we want to delete.

* cfgrtl.c (rtl_merge_blocks): Call maybe_remove_eh_handler on
        labels we want to delete.
        (cfg_layout_merge_blocks): Likewise.

From-SVN: r102512
This commit is contained in:
Richard Henderson 2005-07-28 14:11:30 -07:00 committed by Richard Henderson
parent b188ebb19e
commit 2c97f8e4f3
2 changed files with 17 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2005-07-28 Richard Henderson <rth@redhat.com>
* cfgrtl.c (rtl_merge_blocks): Call maybe_remove_eh_handler on
labels we want to delete.
(cfg_layout_merge_blocks): Likewise.
2005-07-28 Richard Henderson <rth@redhat.com>
PR target/17692

View File

@ -539,6 +539,10 @@ rtl_merge_blocks (basic_block a, basic_block b)
/* If there was a CODE_LABEL beginning B, delete it. */
if (LABEL_P (b_head))
{
/* This might have been an EH label that no longer has incoming
EH edges. Update data structures to match. */
maybe_remove_eh_handler (b_head);
/* Detect basic blocks with nothing but a label. This can happen
in particular at the end of a function. */
if (b_head == b_end)
@ -2733,7 +2737,13 @@ cfg_layout_merge_blocks (basic_block a, basic_block b)
/* If there was a CODE_LABEL beginning B, delete it. */
if (LABEL_P (BB_HEAD (b)))
delete_insn (BB_HEAD (b));
{
/* This might have been an EH label that no longer has incoming
EH edges. Update data structures to match. */
maybe_remove_eh_handler (BB_HEAD (b));
delete_insn (BB_HEAD (b));
}
/* We should have fallthru edge in a, or we can do dummy redirection to get
it cleaned up. */