This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] Gimplifying Java
- From: Jeff Sturm <jsturm at one-point dot com>
- To: law at redhat dot com
- Cc: Andrew MacLeod <amacleod at redhat dot com>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 13 Jun 2003 18:19:08 -0400 (EDT)
- Subject: Re: [tree-ssa] Gimplifying Java
On Thu, 12 Jun 2003 law@redhat.com wrote:
> Let me know what you find. I'm about to dive back into the EH CFG
> stuff (where I suspect we've got at least one latent bug). If
> I've got your analysis handy I can factor it into my cleanup work
> and hopefully resolve your problem.
See my last message to Andrew, I tried something like what follows, and it
seems to generate a better CFG for my test case. I'm not yet convinced
this is always right either. For instance, how can target_bb ever be null?
Jeff
Index: tree-cfg.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-cfg.c,v
retrieving revision 1.1.4.105
diff -U7 -p -r1.1.4.105 tree-cfg.c
--- tree-cfg.c 12 Jun 2003 04:36:20 -0000 1.1.4.105
+++ tree-cfg.c 13 Jun 2003 22:00:01 -0000
@@ -1080,25 +1080,23 @@ make_ctrl_stmt_edges (basic_block bb)
/* FALL THROUGH */
case TRY_CATCH_EXPR:
{
basic_block target_bb = bb_for_stmt (TREE_OPERAND (last, 0));
if (target_bb)
make_edge (bb, target_bb, EDGE_FALLTHRU);
- make_edge (bb, successor_block (bb), EDGE_FALLTHRU);
break;
}
case CATCH_EXPR:
{
basic_block target_bb = bb_for_stmt (CATCH_BODY (last));
if (target_bb)
make_edge (bb, target_bb, EDGE_FALLTHRU);
- make_edge (bb, successor_block (bb), EDGE_FALLTHRU);
break;
}
case EH_FILTER_EXPR:
{
basic_block target_bb = bb_for_stmt (EH_FILTER_FAILURE (last));