Jan Hubicka wrote:
> I've comitted the attached patch. I didn't suceed to reproduce your
> failures, but Danny reported it fixes his and it bootstrap/regtests
> i686-pc-gnu-linux.
Thanks; this does fix one crash on s390x, but doesn't fix the
pass57-frag crashes on s390.
What happens is that after the predictions are created, but before
remove_edge is called, the edge is modified in rtl_split_block
(called from tree_expand_cfg):
/* Redirect the outgoing edges. */
new_bb->succs = bb->succs;
bb->succs = NULL;
FOR_EACH_EDGE (e, ei, new_bb->succs)
e->src = new_bb;
Now the 'src' link points to a different basic block, but the old
basic block still has the prediction pointing to the edge.
When remove_edge is finally called, your new code tries to find
and remove the prediction from the *new* basic block's prediction
list -- but it still remains on the old one's list ...
Bye,
Ulrich
--
Dr. Ulrich Weigand
Linux on zSeries Development
[EMAIL PROTECTED]