> On Mon, 2020-01-06 at 01:03 -0600, Xiong Hu Luo wrote:
> > Inline should return failure either (newsize > param_large_function_insns)
> > OR (newsize > limit).  Sometimes newsize is larger than
> > param_large_function_insns, but smaller than limit, inline doesn't return
> > failure even if the new function is a large function.
> > Therefore, param_large_function_insns and param_large_function_growth 
> > should be
> > OR instead of AND, otherwise --param large-function-growth won't
> > work correctly with --param large-function-insns.
> > 
> > gcc/ChangeLog:
> > 
> >     2020-01-06  Luo Xiong Hu  <luo...@linux.ibm.com>
> > 
> >     ipa-inline-analysis.c (estimate_growth): Fix typo.
> >     ipa-inline.c (caller_growth_limits): Use OR instead of AND.
> OK

This patch also seems wrong.  Inliner should return failure when
 newsize > param_large_function_insns && newsize > limit
The reason is same as with large_unit_insns.  We used to have only
growth limits but it has turned out that this gets too
restrictive/random for very small units/growths.

So the logic is meant to be that inlining is OK either
 - if function is reasonably small (large_function_insns limit is not
   met)
 - or it does not grow too much (large-function-growth isnot met)

@item large-function-insns                                                      
The limit specifying really large functions.  For functions larger than
this    limit after inlining, inlining is constrained by @option{--param
large-function-growth}.  This parameter is useful primarily to avoid
extreme compilation time caused by non-linear algorithms used by the
back end.


Honza
> jeff
> 

Reply via email to