From 2c97f8e4f318d3e2e0c745078cd7e3c813a2a1c8 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 28 Jul 2005 14:11:30 -0700 Subject: [PATCH] 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(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 46d1a4d3306..495a756ea2a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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 diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 30290d4902c..e39b196be07 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. */ -- 2.30.2