diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-28 21:11:30 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-28 21:11:30 +0000 |
commit | 7b07eae7ae7f573505fbcf944631f36ac6c8bf36 (patch) | |
tree | faf9d9e49493f44b6b14fc21e9cf9bf92c2d6fa5 /gcc | |
parent | f2b6b003c18093c3be3b15faa0f2bdc7f652a3fd (diff) | |
download | gcc-7b07eae7ae7f573505fbcf944631f36ac6c8bf36.tar.gz |
* cfgrtl.c (rtl_merge_blocks): Call maybe_remove_eh_handler on
labels we want to delete.
(cfg_layout_merge_blocks): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102512 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-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 46d1a4d3306..495a756ea2a 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 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. */ |