> 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 ...
Uhm, I will test fix for this too. Thanks! Honza > > Bye, > Ulrich > > -- > Dr. Ulrich Weigand > Linux on zSeries Development > [EMAIL PROTECTED]