[Bug rtl-optimization/24626] [4.1/4.2 Regression] internal compiler error: verify_flow_info failed

steven at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Fri Jan 13 22:09:00 GMT 2006



------- Comment #35 from steven at gcc dot gnu dot org  2006-01-13 22:09 -------
After too much trial-and-error, and thinking about it some more, I think we
should approach this as a SMS or powerpc bug.  The code that Mustafa changed
makes us reject the RTL equivalent of "if (a) goto b; b: ...", i.e. a jump to
the next instruction ;-)

My initial reaction was that you want to clean that jump up, but then again,
the code Mustafa changed explicitly allowed this kind of jump.  We had:

  if (n_branch != 1 && any_condjump_p (BB_END (bb))
      && JUMP_LABEL (BB_END (bb)) != BB_HEAD (fallthru->dest))

which says that if you have a conditional jump, there must be at least one
branch edge, _unless_ the jump is to the next instruction.  In the latter case,
there is only one edge in the CFG from bb to single_succ(bb), which represents
both the fallthru and the branch cases of the conditional jump.

The problem is that reverting Mustafa's "fix" exposes an ICE on PowerPC.  I
think we should try to understand where that comes from before reverting.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24626



More information about the Gcc-bugs mailing list