This is the mail archive of the
java-prs@gcc.gnu.org
mailing list for the Java project.
[Bug tree-optimization/19505] [4.0/4.1 Regression] Java bytecode ICE in except.c remove_unreachable_regions
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: java-prs at gcc dot gnu dot org
- Date: 25 Sep 2005 16:00:57 -0000
- Subject: [Bug tree-optimization/19505] [4.0/4.1 Regression] Java bytecode ICE in except.c remove_unreachable_regions
- References: <20050118145002.19505.overholt@redhat.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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