PING: Re: [PATCH v4 0/1] Improve inlining

Eldar Osmanovic <[email protected]>
Newsgroups gmane.comp.gcc.patches
Message-ID <[email protected]>
Hi all,

Just a gentle ping on this patch.

Regards,
Eldar.

On 7/24/26 16:22, Eldar Osmanovic wrote:
> This revision substantially reworks the previous proposal for allowing
> limited inlining growth under -Os.
>
> The v3 patch introduced two new inliner parameters. Following the
> review feedback that the inliner already has too many tuning knobs, v4
> removes both parameters and instead uses the existing distinction
> between -Os and -Oz.
>
> Both -Os and -Oz enable optimize_size, which makes the generic
> callgraph hotness predicate reject all such edges as hot. This revision
> leaves that predicate unchanged because it is also used by IPA
> transformations unrelated to inlining. Instead, it introduces an
> inliner-local decision for OPTIMIZE_SIZE_BALANCED (-Os).
>
> Under -Os, positive growth is permitted only when reliable PGO or
> AutoFDO feedback identifies the call as hot and big_speedup_p predicts
> a significant benefit. Calls that are probably never executed are
> rejected, growth is bounded by the existing automatic inlining limit,
> and simple tail-position calls are excluded. -Oz, -Os without profile
> feedback, and non-size optimization modes retain their existing
> behavior. No new inliner parameters are introduced.
>
> The CoreMark-Pro workloads were analyzed to determine whether each
> patch-induced inline occurred inside the timed kernel or only in setup
> and support code. The core workload was the only workload where the
> patch introduced an additional inline on a path inside the timed kernel:
>
>          crcu8 -> crcu16
>
> Other workloads either had no patch-induced inlining in their timed
> kernels or differed only in shared setup and support code outside the
> measured region. For example, an additional inline involving
> random_u32 and random_u8_vector occurred in input-generation code rather
> than in a timed workload kernel. Their scores are therefore not used
> as evidence for the direct performance benefit of this inlining decision.
>
> The affected CoreMark-Pro core workload produced the following result:
>
> Target         Speedup        Final .text change
> x86_64          +0.50 %          0 bytes
> RISC-V          +0.32 %         +4 bytes (+0.0009 %)
> MIPS            +0.11 %        -16 bytes (-0.0026 %)
>
> All results were optained with CoreMark-Pro's core worklaod compiled
> with -Os and PGO. The baseline and patched compilers used identical
> compiler options and equivalent profile-training inputs. Final performance
> measurments were run natively. The x86_64 measurments were performed on an
> Intel Core i5-11500H, RISC-V measurments on a P8700 Boston board,
> and MIPS measurments on a Cavium Octeon+ V0.1 processor.
>
> To isolate the local effect of the newly permitted inline, I also used
> a PGO microbenchmark whose measured loop is intentionally dominated by
> the affected crcu16 call. It produced the following local speedups:
> +9.43 % for x86_64, +6.00 % for RISC-V and +25.00 % for MIPS. The
> microbenchmark results are intentionally isolated best-case results
> and should not be interpreted as suite-wide or general compiler
> performance improvements. These measurments were also performed natively.
>
> This work originated from the MIPS GCC patch c38d7e548cbb, but v4
> is a substantial rewrite in response to review.
>
> Changes in v4:
>          - Removed early-inlining-insns cold and
>            max-inline-insns-small-and-cold.
>          - Kept cgraph_edge::maybe_hot_p unchanged and scoped the new
>            behavior to the inliner.
>          - Distinguished -Os from -Oz using OPTIMIZE_SIZE_BALANCED.
>          - Required reliable profile hotness and big_speedup_p.
>          - Rejected probably-never-executed ant tail-position calls.
>          - Replaced the parameter-based tests with tests for -Os without a
>            profile, -Os with PGO, profile-cold calls , tail calls and -Oz.
>
> Link to v3:
> https://sourceware.org/pipermail/gcc-patches/2026-June/720810.html
>
> Eldar Osmanovic (1):
>    Possible inlining improvements with -Os
>
>   gcc/ipa-inline.cc                             | 134 +++++++++++++++++-
>   .../gcc.dg/ipa/inline-os-no-profile-1.c       |  24 ++++
>   .../gcc.dg/tree-prof/inline-os-pgo-1.c        |  33 +++++
>   .../gcc.dg/tree-prof/inline-os-pgo-cold-1.c   |  34 +++++
>   .../gcc.dg/tree-prof/inline-os-pgo-tail-1.c   |  32 +++++
>   .../gcc.dg/tree-prof/inline-oz-pgo-1.c        |  33 +++++
>   6 files changed, 287 insertions(+), 3 deletions(-)
>   create mode 100644 gcc/testsuite/gcc.dg/ipa/inline-os-no-profile-1.c
>   create mode 100644 gcc/testsuite/gcc.dg/tree-prof/inline-os-pgo-1.c
>   create mode 100644 gcc/testsuite/gcc.dg/tree-prof/inline-os-pgo-cold-1.c
>   create mode 100644 gcc/testsuite/gcc.dg/tree-prof/inline-os-pgo-tail-1.c
>   create mode 100644 gcc/testsuite/gcc.dg/tree-prof/inline-oz-pgo-1.c
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.