This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Edges, predictions, and GC crashes ...
> 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
> Ulrich.Weigand@de.ibm.com