Hi,
this patch makes inline metric to be
       estimate_speedup
  ---------------------------- (over)
  edge_growth^2*overall_growth

This is intended to make stronger push on inliner to preffer functions with
smaller growth and do not take overall growth (that is expected unit growth
after inlining all calls to a give function) so seriously.

This solve code size regression for tramp3d and also improve DLV. I tested it
on firefox with resonable results and on subset of SPEC that caused inliner
issues in past.

Lacking access to SUSE's periodic testers, I intend to commit it today and
watch them for possible regressions.

Bootstrapped/regtested x86_64-linux.

        PR ipa/65076
        * ipa-inline.c (edge_badness): Base denominator on callee's
        grwoth squared.

Index: ipa-inline.c
===================================================================
--- ipa-inline.c        (revision 221757)
+++ ipa-inline.c        (working copy)
@@ -1099,7 +1099,7 @@ edge_badness (struct cgraph_edge *edge,
        numerator = numerator >> 11;
       denominator = growth;
       if (callee_info->growth > 0)
-       denominator *= callee_info->growth;
+       denominator *= callee_info->growth * callee_info->growth;
 
       badness = - numerator / denominator;
 

Reply via email to