This is the mail archive of the gcc-bugs@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]

Re: ICE in fixup_reorder_chain, at bb-reorder.c:633


On Thu, Sep 07, 2000 at 05:47:24PM -0400, John David Anglin wrote:
> After looking at this, it became apparent that the "fallthru" block is
> the same as the block for the casesi insn.

Eh?  That makes no sense at all.  If true, that just means that
the initial CFG is broken.  But looking at how the CFG is created,
I don't see how that could happen.

> I think bb-reorder is confused here.  If a jump is required when the
> block with casesi insn is moved, then fixup_reorder_chain should
> provide for it.

Certainly it should, if one is needed.  That was the whole point of
my comment.  That said, I wish you'd provided a compilable test case,
since we should have kept the two blocks together, but didn't.

Put a breakpoint at 

  /* In the absence of a prediction, disturb things as little as possible
     by selecting the old "next" block from the list of successors.  If
     there had been a fallthru edge, that will be the one.  */
  if (! next)
    {
      for (e = bb->succ; e ; e = e->succ_next)

conditional on bb->index == 206, and see why the fallthru edge is
not chosen.


r~

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