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: Recent IPA regression with internal functions


> On Sun, Sep 15, 2013 at 09:08:00PM +0200, Jan Hubicka wrote:
> > > 2013-09-13  Jakub Jelinek  <jakub@redhat.com>
> > > 
> > > 	* ipa-prop.c (ipa_compute_jump_functions_for_edge): Return early
> > > 	for internal calls.
> > 
> > That seems resonable.  I wonder if we want to consider internal calls to form
> > callgarph edges at all: perhaps we can just modify cgraph builder+verifier
> > to skip them and consider them to be normal instruction....
> 
> I'd wonder how many spots would need to be changed for that though, to check
> for is_gimple_call && !gimple_call_internal_p instead of just
> is_gimple_call.  In cgraph*, inliner, sra, IPA, whatever else assumes that a

We can have something like is_real_gimpl_call_p predicate.  We already special case
is_inexpensive_builtin in ipa-inline.

> GIMPLE_CALL should have a cgraph_edge associated with it.
> The internal functions for the time being should be pretty rare,
> right now they are used just for some ARM vectorization stuff (during/after
> vectorizations only, so no IPA) and newly for the OpenMP/Cilk+ SIMD loops,
> so if it is just about avoiding memory waste because of them, I think it
> isn't a big deal.

I am more concerned about the heuristic special casing function call, such as
num_calls in ipa-inline.c.  None of these are too important at this point, but
perhaps from longer term maintanibility it would be better to not lie to the
compiler and make the callgraph to not contain fake call sites....

Honza
> 
> 	Jakub


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