This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]