https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79506
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Ok, so it's IVOPTs becoming relatively slower fastest (with --param inline-min-speedup=8 it surpasses IRA as the most expensive pass). 34% of IVO is spent in simple_iv (and siblings), the other 34% are spent in determine_group_iv_cost. Overall it seems like just the regular "larger functions compile slower". inline change (look at the weird -0.0 badness?!) --- tfft2.f90.078i.inline.10 2017-02-14 12:06:39.638906303 +0100 +++ tfft2.f90.078i.inline.8 2017-02-14 12:06:49.199057817 +0100 @@ -4940,12 +4940,62 @@ Processing frequency rfft Called by tfft that is executed once Called in loop - not inlinable: tfft/3 -> rfft/1, --param max-inline-insns-auto limit reached + decreasing badness tfft/3 -> rfft/1, -0.000000 to -0.000000 Estimating body: tfft/3 Known to be false: not inlined size:590 time:24774 Inlined into tfft which now has time 24776 and size 593, net change of +462. -Unit growth for small function inlining: 945->1407 (48%) + +Considering rfft/1 with 535 size + to be inlined into tfft/3 in tfft2.f90:36 + Estimated badness is -0.000000, frequency 5.67. + Badness calculation for tfft/3 -> rfft/1 + size growth 462, time 4083 big_speedup + -0.000000: guessed profile. frequency 5.670000, count 0 caller count 0 time w/o inlining 52479.620026, time w/ inlining 47841.559998 overall growth 462 (current) 924 (original) 66204 (compensated) + Adjusted by hints -0.000000 + Scaling time by probability:0.000000 + Accounting size:2.50, time:0.00 on predicate:(true) + Scaling time by probability:0.000000 + Accounting size:2.00, time:0.00 on predicate:(true) + Accounting size:13.00, time:261.35 on predicate:(true) + Scaling time by probability:0.000000 + Accounting size:4.00, time:0.00 on predicate:(true) + Scaling time by probability:0.000000 + Accounting size:2.50, time:0.00 on predicate:(true) + Accounting size:6.00, time:35.31 on predicate:(true) + Scaling time by probability:0.000000 + Accounting size:2.00, time:0.00 on predicate:(true) + Accounting size:28.00, time:524.72 on predicate:(true) + Scaling time by probability:0.000000 + Accounting size:4.00, time:0.00 on predicate:(true) + Scaling time by probability:0.000000 + Accounting size:12.00, time:0.00 on predicate:(true) + Accounting size:14.00, time:4.84 on predicate:(true) + Scaling time by probability:0.000000 + Accounting size:2.00, time:0.00 on predicate:(true) + Accounting size:41.00, time:54.74 on predicate:(true) + Scaling time by probability:0.000000 + Accounting size:2.00, time:0.00 on predicate:(true) + Accounting size:20.50, time:65.23 on predicate:(true) + Accounting size:65.00, time:2192.07 on predicate:(true) + Scaling time by probability:0.000000 + Accounting size:1.50, time:0.00 on predicate:(true) + Accounting size:79.00, time:7097.12 on predicate:(true) + Accounting size:79.00, time:12617.33 on predicate:(true) + Accounting size:46.00, time:131.93 on predicate:(true) + Scaling time by probability:0.000000 + Accounting size:2.50, time:0.00 on predicate:(true) + Accounting size:4.00, time:2.95 on predicate:(true) + Accounting size:4.00, time:6.58 on predicate:(true) + Accounting size:6.00, time:0.00 on predicate:(true) +Processing frequency rfft + Called by tfft that is executed once + Called in loop + Estimating body: tfft/3 + Known to be false: not inlined + size:1051 time:47842 + Inlined into tfft which now has time 47844 and size 1054, net change of +461. +Unit growth for small function inlining: 945->1868 (97%) so we inline the main computation routine into the "main" try-this-N-times loop. Not sure why we get any estimated speedup here... (maybe ipa-cp propagated that constant call arg from both call sites, but inlining above doesn't suggest that).