OSDN Git Service

* cfgrtl.c (rtl_merge_blocks): Call maybe_remove_eh_handler on
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Jul 2005 21:11:30 +0000 (21:11 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Jul 2005 21:11:30 +0000 (21:11 +0000)
        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

gcc/ChangeLog
gcc/cfgrtl.c

index 46d1a4d..495a756 100644 (file)
@@ -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.
index 30290d4..e39b196 100644 (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.  */