On Tue, 7 Dec 2021 16:07:01 +0100 Jan Hubicka via Gcc-patches <gcc-patches@gcc.gnu.org> wrote:
> Hi, > as dicussed in PR ipa/103454 there are several benchmarks that regresses > for -finline-functions-called once. Runtmes: > - tramp3d with -Ofast. 31% > - exchange2 with -Ofast 11-21% > - roms O2 9%-10% > - tonto 2.5-3.5% with LTO > Build times: > - specfp2006 41% (mostly wrf that builds 71% faster) > - specint2006 1.5-3% > - specfp2017 64% (again mostly wrf) > - specint2017 2.5-3.5% > > > This patch adds two params to tweak the behaviour: > 1) max-inline-functions-called-once-loop-depth limiting the loop depth > (this is useful primarily for exchange where the inlined function is in > loop depth 9) > 2) max-inline-functions-called-once-insns > We already have large-function-insns/growth parameters, but these are > limiting also inlining small functions, so reducing them will regress > very large functions that are hot. > > Because inlining functions called once is meant just as a cleanup pass > I think it makes sense to have separate limit for it. > > I set the parmaeters to 6 and 4000. > 4000 was chosen to make fatigue benchmark happy and that seems to be only one > holding the value pretty high. I opened > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103585 to track this. > > I plan to reduce the value during before christmas after bit more testing > since > it seems to be overall win even if we trade fatigue2 performance, but I would > like to get more testing on larger C++ APPs first. Will this hurt -Os -finline-limit=0 ? thanks,