------- Additional Comments From pinskia at gcc dot gnu dot org  2005-09-25 
16:00 -------
The patch is:
Index: tree-cfgcleanup.c
===============================================================
====
RCS file: /cvs/gcc/gcc/gcc/tree-cfgcleanup.c,v
retrieving revision 2.7
diff -u -p -r2.7 tree-cfgcleanup.c
--- tree-cfgcleanup.c   19 Aug 2005 18:52:55 -0000      2.7
+++ tree-cfgcleanup.c   24 Sep 2005 23:30:54 -0000
@@ -392,7 +392,18 @@ remove_forwarder_block (basic_block bb, 
            return false;
        }
     }
-
+  /* Check to make sure that we can remove a forwarder block for eh edges.  */
+  FOR_EACH_EDGE (e, ei, bb->preds)
+    {
+      /* This check is too strong, we should also be checking eh regions
+         but this is much harder.  */
+      if (e->flags & EDGE_EH)
+        {
+         if (!single_pred_p (dest))
+           return false;
+       }
+    }
+  
   /* Redirect the edges.  */
   for (ei = ei_start (bb->preds); (e = ei_safe_edge (ei)); )
     {


Which I will post after testing.
I posted the checking patch here:
http://gcc.gnu.org/ml/gcc-patches/2005-09/msg01559.html


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19505

Reply via email to