This is the mail archive of the gcc-patches@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: crossjumping improvement


> Jan Hubicka <jh@suse.cz> writes:
> 
> > Wed Dec 12 15:32:15 CET 2001  Jan Hubicka  <jh@suse.cz>
> > 
> > 	* cfgcleanup.c (insns_match_p): Break out from ...;
> > 	(flow_find_cross_jump): ... here;
> > 	(outgoing_edges_match): Add parameter MODE; attempt to match everything
> > 	except for tablejumps.
> > 	(try_crossjump_to_edge): Accept complex edges.
> > 	(try_crossjump_bb): Likewise.
> 
> This patch introduced the code where we're failing in this PR:
> 
> 	http://gcc.gnu.org/ml/gcc-bugs/2002-02/msg00700.html
> 
> 
> > !   /* In case we do have EH edges, ensure we are in the same region.  */
> > !   if (nehedges1)
> > !     {
> > !       rtx n1 = find_reg_note (bb1->end, REG_EH_REGION, 0);
> > !       rtx n2 = find_reg_note (bb2->end, REG_EH_REGION, 0);
> 
> n1 and n2 are both NULL at this point.
> 
> > !       if (XEXP (n1, 0) != XEXP (n2, 0))
> > ! 	return false;
> > !     }
> 
> 
> Any ideas Jan?

Basically there should be the prediction notes on each conditional
jump at that time. Do you have any insight, where
the notes got lost, or the conditionals introduced?
In worst case we still can check the nullness of pointers, but it is paper
around.

I can investigate this at monday, as I am leaving to Nuerberg soon.

Honza
> 
> Thanks!
> 
> AG
> 
> -- 
> Anthony Green                                                        Red Hat
>                                                        Sunnyvale, California


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