On 1/7/20 9:40 AM, Jan Hubicka wrote:
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.

Hello.

The patch was already installed and caused quite significant changes in SPEC
benchmarks:
https://lnt.opensuse.org/db_default/v4/SPEC/latest_runs_report

May I revert the patch?

Thanks,
Martin



Honza
jeff


Reply via email to