This is the mail archive of the
mailing list for the GCC project.
Re: Recent IPA regression with internal functions
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: Jan Hubicka <hubicka at ucw dot cz>, Martin Jambor <mjambor at suse dot cz>, Jan Hubicka <jh at suse dot cz>, gcc-patches at gcc dot gnu dot org
- Date: Mon, 16 Sep 2013 20:45:37 +0200
- Subject: Re: Recent IPA regression with internal functions
- Authentication-results: sourceware.org; auth=none
- References: <20130913153123 dot GF1817 at tucnak dot redhat dot com> <20130915190759 dot GA19676 at atrey dot karlin dot mff dot cuni dot cz> <20130916075645 dot GO1817 at tucnak dot redhat dot com>
> On Sun, Sep 15, 2013 at 09:08:00PM +0200, Jan Hubicka wrote:
> > > 2013-09-13 Jakub Jelinek <firstname.lastname@example.org>
> > >
> > > * 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....