https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110334
--- Comment #15 from rguenther at suse dot de <rguenther at suse dot de> ---
On Wed, 28 Jun 2023, hubicka at ucw dot cz wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110334
> 
> --- Comment #14 from Jan Hubicka <hubicka at ucw dot cz> ---
> > 
> > why disallow caller->indirect_calls?
> See testcase in comment #9
> > 
> > > +       return false;
> > > +      for (cgraph_edge *e2 = callee->callees; e2; e2 = e2->next_callee)
> > 
> > I don't think this flys - it looks quadratic.  Can we compute this
> > in the inline summary once instead?
> 
> I guess I can place a cache there.  I think this check will become more
> global over time so it more fits IMO here.
> > 
> > As for indirect calls, can we maybe mark initial direct GIMPLE call
> > stmts as "always-inline" and only look at that marking, thus an
> > indirect call will never become "always-inline"?  Iff cgraph edges
> > prevail during all early inlining we could mark call edges for
> > this purpose?
> 
> I also think we need call site specific info.
> Tagging gimple call statements and copying the info to gimple edges will
> probably be needed here.  We want to keep the info from early inlining
> to late inlining since we output errors late.
> We already have plenty of GF_CALL_ flags, so adding one should be easy?

We have 3 bits left :/  I was hoping that cgraph_edge lives long
enough?  But I suppose we're not keeping them across the early opts
pipeline.

Reply via email to