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;