------- 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