diff options
author | Richard Henderson <rth@redhat.com> | 2005-07-28 14:11:30 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2005-07-28 14:11:30 -0700 |
commit | 2c97f8e4f318d3e2e0c745078cd7e3c813a2a1c8 (patch) | |
tree | faf9d9e49493f44b6b14fc21e9cf9bf92c2d6fa5 | |
parent | b188ebb19e8447d549511c56da590629b32f733a (diff) | |
download | gcc-2c97f8e4f318d3e2e0c745078cd7e3c813a2a1c8.zip gcc-2c97f8e4f318d3e2e0c745078cd7e3c813a2a1c8.tar.gz gcc-2c97f8e4f318d3e2e0c745078cd7e3c813a2a1c8.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cfgrtl.c | 12 |
2 files changed, 17 insertions, 1 deletions
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 <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 * 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. */ |