re PR middle-end/83665 (Big code size regression and some code quality improvement...
authorJan Hubicka <hubicka@ucw.cz>
Mon, 12 Feb 2018 09:48:06 +0000 (10:48 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Mon, 12 Feb 2018 09:48:06 +0000 (09:48 +0000)
PR middle-end/83665
* params.def (inline-min-speedup): Increase from 8 to 15.
(max-inline-insns-auto): Decrease from 40 to 30.
* ipa-split.c (consider_split): Add some buffer for function to
be considered inlining candidate.
* invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
default values.

From-SVN: r257582

gcc/ChangeLog
gcc/doc/invoke.texi
gcc/ipa-split.c
gcc/params.def

index f6df008a6fd8abb920cc9c4a90ae283ea0093168..6faa322572f134d43634dae5d52fcdc0595e9de3 100644 (file)
@@ -1,3 +1,13 @@
+2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR middle-end/83665
+       * params.def (inline-min-speedup): Increase from 8 to 15.
+       (max-inline-insns-auto): Decrease from 40 to 30.
+       * ipa-split.c (consider_split): Add some buffer for function to
+       be considered inlining candidate.
+       * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
+       default values.
+
 2018-02-12  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/84037
index df357bea7dc2f8c715edb04177da5174322c5467..9db9d083a47543502e0ce5a4013ebe550d84e80b 100644 (file)
@@ -10131,13 +10131,14 @@ a lot of functions that would otherwise not be considered for inlining
 by the compiler are investigated.  To those functions, a different
 (more restrictive) limit compared to functions declared inline can
 be applied.
-The default value is 40.
+The default value is 30.
 
 @item inline-min-speedup
 When estimated performance improvement of caller + callee runtime exceeds this
 threshold (in percent), the function can be inlined regardless of the limit on
 @option{--param max-inline-insns-single} and @option{--param
 max-inline-insns-auto}.
+The default value is 15.
 
 @item large-function-insns
 The limit specifying really large functions.  For functions larger than this
index 24b30f62cef55c2dd1634fa2de1d1d30c91eca80..b03ae02924aab68df6bac2a921e5ddb066698dfb 100644 (file)
@@ -558,10 +558,13 @@ consider_split (struct split_point *current, bitmap non_ssa_vars,
                 "  Refused: split size is smaller than call overhead\n");
       return;
     }
+  /* FIXME: The logic here is not very precise, because inliner does use
+     inline predicates to reduce function body size.  We add 10 to anticipate
+     that.  Next stage1 we should try to be more meaningful here.  */
   if (current->header_size + call_overhead
       >= (unsigned int)(DECL_DECLARED_INLINE_P (current_function_decl)
                        ? MAX_INLINE_INSNS_SINGLE
-                       : MAX_INLINE_INSNS_AUTO))
+                       : MAX_INLINE_INSNS_AUTO) + 10)
     {
       if (dump_file && (dump_flags & TDF_DETAILS))
        fprintf (dump_file,
@@ -574,7 +577,7 @@ consider_split (struct split_point *current, bitmap non_ssa_vars,
      Limit this duplication.  This is consistent with limit in tree-sra.c  
      FIXME: with LTO we ought to be able to do better!  */
   if (DECL_ONE_ONLY (current_function_decl)
-      && current->split_size >= (unsigned int) MAX_INLINE_INSNS_AUTO)
+      && current->split_size >= (unsigned int) MAX_INLINE_INSNS_AUTO + 10)
     {
       if (dump_file && (dump_flags & TDF_DETAILS))
        fprintf (dump_file,
index 930b31820be96838dfaf8fc662ca0f7bc768ba65..e3336793b230f112b69c787a0d6748ffcbbc212e 100644 (file)
@@ -52,13 +52,13 @@ DEFPARAM (PARAM_PREDICTABLE_BRANCH_OUTCOME,
 DEFPARAM (PARAM_INLINE_MIN_SPEEDUP,
          "inline-min-speedup",
          "The minimal estimated speedup allowing inliner to ignore inline-insns-single and inline-insns-auto.",
-         8, 0, 0)
+         15, 0, 0)
 
 /* The single function inlining limit. This is the maximum size
    of a function counted in internal gcc instructions (not in
    real machine instructions) that is eligible for inlining
    by the tree inliner.
-   The default value is 450.
+   The default value is 400.
    Only functions marked inline (or methods defined in the class
    definition for C++) are affected by this.
    There are more restrictions to inlining: If inlined functions
@@ -77,11 +77,11 @@ DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE,
    that is applied to functions marked inlined (or defined in the
    class declaration in C++) given by the "max-inline-insns-single"
    parameter.
-   The default value is 40.  */
+   The default value is 30.  */
 DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO,
          "max-inline-insns-auto",
          "The maximum number of instructions when automatically inlining.",
-         40, 0, 0)
+         30, 0, 0)
 
 DEFPARAM (PARAM_MAX_INLINE_INSNS_RECURSIVE,
          "max-inline-insns-recursive",