This is the mail archive of the gcc@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]
Other format: [Raw text]

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


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