This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] Insert on edge fix
- From: Jeff Sturm <jsturm at one-point dot com>
- To: Andrew MacLeod <amacleod at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 19 Jun 2003 20:28:30 -0400 (EDT)
- Subject: Re: [tree-ssa] Insert on edge fix
(handle_switch_split): Re-implement using new scheme.
Something about this patch triggered a build failure in libjava...
(gdb) frame
#1 0x08397ec7 in bsi_insert_after (curr_bsi=0xbffff558, t=0x402bee8c,
mode=BSI_NEW_STMT) at ../../gcc/tree-cfg.c:3485
3485 abort ();
(gdb) p *curr_bb
$16 = {head = 0x0, end = 0x0, head_tree_p = 0x0, end_tree_p = 0x0,
pred = 0x85eb4c4, succ = 0x85eab24, local_set = 0x0, cond_local_set = 0x0,
global_live_at_start = 0x0, global_live_at_end = 0x0, aux = 0x85e8988,
index = 92, prev_bb = 0x85e655c, next_bb = 0x85e64b4, loop_depth = 0,
loop_father = 0x0, count = 0, frequency = 0, flags = 2}
Looking at bsi_insert_after:
/* Some blocks are empty. The block iterator points to an empty statement
node in those cases only. */
if (curr_stmt == NULL_TREE)
{
/* An empty block should have only one successor, so try to find the
parent block from it. */
edge succ;
succ = curr_bb->succ;
if (succ->succ_next != NULL)
abort ();
if (curr_bb->head_tree_p == NULL)
abort ();
Does an empty block ever have (head_tree_p == end_tree_p == NULL), or
should it contain an empty statement, as the comment suggests?
Jeff