From 2c97f8e4f318d3e2e0c745078cd7e3c813a2a1c8 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 28 Jul 2005 14:11:30 -0700 Subject: 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 --- gcc/ChangeLog | 6 ++++++ gcc/cfgrtl.c | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 46d1a4d..495a756 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2005-07-28 Richard Henderson + * 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 + PR target/17692 * config/i386/i386.c (ix86_split_sse_movcc): Emit DELETED note when expanding to nothing. diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 30290d4..e39b196 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -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. */ -- cgit v1.1