invoke.texi (early-inlining-insns-O2): Document.
authorJan Hubicka <hubicka@ucw.cz>
Tue, 1 Oct 2019 16:58:35 +0000 (18:58 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 1 Oct 2019 16:58:35 +0000 (16:58 +0000)
* doc/invoke.texi (early-inlining-insns-O2): Document.
(early-inlining-insns): Update.
* params.def (early-inlining-insns-O2): New bound.
(early-inlining-insns): Update docs.
* ipa-inline.c (want_early_inline_function_p): Use new bound.

* g++.dg/tree-ssa/pr61034.C: Set early-inlining-insns-O2=14.
* g++.dg/tree-ssa/pr8781.C: Likewise.
* g++.dg/warn/Wstringop-truncation-1.C: Likewise.
* gcc.dg/ipa/pr63416.c: likewise.
* gcc.dg/vect/pr66142.c: Likewise.
* gcc.dg/tree-ssa/ssa-thread-12.c: Mark compure_idf inline.

From-SVN: r276416

gcc/ChangeLog
gcc/doc/invoke.texi
gcc/ipa-inline.c
gcc/params.def
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/tree-ssa/pr61034.C
gcc/testsuite/g++.dg/tree-ssa/pr8781.C
gcc/testsuite/g++.dg/warn/Wstringop-truncation-1.C
gcc/testsuite/gcc.dg/ipa/pr63416.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c
gcc/testsuite/gcc.dg/vect/pr66142.c

index bb4de20..b4c4292 100644 (file)
@@ -1,3 +1,11 @@
+2019-10-01  Jan Hubicka  <hubicka@ucw.cz>
+
+       * doc/invoke.texi (early-inlining-insns-O2): Document.
+       (early-inlining-insns): Update.
+       * params.def (early-inlining-insns-O2): New bound.
+       (early-inlining-insns): Update docs.
+       * ipa-inline.c (want_early_inline_function_p): Use new bound.
+
 2019-10-01  Oleg Endo  <olegendo@gcc.gnu.org>
 
        PR target/88562
index 83016a5..4281ee7 100644 (file)
@@ -11291,9 +11291,17 @@ recursion depth can be guessed from the probability that function recurses
 via a given call expression.  This parameter limits inlining only to call
 expressions whose probability exceeds the given threshold (in percents).
 
+@item early-inlining-insns-O2
+Specify growth that the early inliner can make.  In effect it increases
+the amount of inlining for code having a large abstraction penalty.
+This is applied to functions compiled with @option{-O1} or @option{-O2}
+optimization levels.
+
 @item early-inlining-insns
 Specify growth that the early inliner can make.  In effect it increases
 the amount of inlining for code having a large abstraction penalty.
+This is applied to functions compiled with @option{-O3} or @option{-Ofast}
+optimization levels.
 
 @item max-early-inliner-iterations
 Limit of iterations of the early inliner.  This basically bounds
index b62d280..c8689c7 100644 (file)
@@ -641,6 +641,10 @@ want_early_inline_function_p (struct cgraph_edge *e)
     {
       int growth = estimate_edge_growth (e);
       int n;
+      int early_inlining_insns = opt_for_fn (e->caller->decl, optimize) >= 3
+                                ? PARAM_VALUE (PARAM_EARLY_INLINING_INSNS)
+                                : PARAM_VALUE (PARAM_EARLY_INLINING_INSNS_O2);
+
 
       if (growth <= PARAM_VALUE (PARAM_MAX_INLINE_INSNS_SIZE))
        ;
@@ -654,26 +658,28 @@ want_early_inline_function_p (struct cgraph_edge *e)
                             growth);
          want_inline = false;
        }
-      else if (growth > PARAM_VALUE (PARAM_EARLY_INLINING_INSNS))
+      else if (growth > early_inlining_insns)
        {
          if (dump_enabled_p ())
            dump_printf_loc (MSG_MISSED_OPTIMIZATION, e->call_stmt,
                             "  will not early inline: %C->%C, "
-                            "growth %i exceeds --param early-inlining-insns\n",
-                            e->caller, callee,
-                            growth);
+                            "growth %i exceeds --param early-inlining-insns%s\n",
+                            e->caller, callee, growth,
+                            opt_for_fn (e->caller->decl, optimize) >= 3
+                            ? "" : "-O2");
          want_inline = false;
        }
       else if ((n = num_calls (callee)) != 0
-              && growth * (n + 1) > PARAM_VALUE (PARAM_EARLY_INLINING_INSNS))
+              && growth * (n + 1) > early_inlining_insns)
        {
          if (dump_enabled_p ())
            dump_printf_loc (MSG_MISSED_OPTIMIZATION, e->call_stmt,
                             "  will not early inline: %C->%C, "
-                            "growth %i exceeds --param early-inlining-insns "
+                            "growth %i exceeds --param early-inlining-insns%s "
                             "divided by number of calls\n",
-                            e->caller, callee,
-                            growth);
+                            e->caller, callee, growth,
+                            opt_for_fn (e->caller->decl, optimize) >= 3
+                            ? "" : "-O2");
          want_inline = false;
        }
     }
index d2d957f..0acf29b 100644 (file)
@@ -233,8 +233,12 @@ DEFPARAM(PARAM_IPCP_UNIT_GROWTH,
         10, 0, 0)
 DEFPARAM(PARAM_EARLY_INLINING_INSNS,
         "early-inlining-insns",
-        "Maximal estimated growth of function body caused by early inlining of single call.",
+        "Maximal estimated growth of function body caused by early inlining of single call with -O3 and -Ofast.",
         14, 0, 0)
+DEFPARAM(PARAM_EARLY_INLINING_INSNS_O2,
+        "early-inlining-insns-O2",
+        "Maximal estimated growth of function body caused by early inlining of single call with -O1 and -O2.",
+        6, 0, 0)
 DEFPARAM(PARAM_LARGE_STACK_FRAME,
         "large-stack-frame",
         "The size of stack frame to be considered large.",
index df6105f..0dcaf4b 100644 (file)
@@ -1,3 +1,12 @@
+2019-10-01  Jan Hubicka  <hubicka@ucw.cz>
+
+       * g++.dg/tree-ssa/pr61034.C: Set early-inlining-insns-O2=14.
+       * g++.dg/tree-ssa/pr8781.C: Likewise.
+       * g++.dg/warn/Wstringop-truncation-1.C: Likewise.
+       * gcc.dg/ipa/pr63416.c: likewise.
+       * gcc.dg/vect/pr66142.c: Likewise.
+       * gcc.dg/tree-ssa/ssa-thread-12.c: Mark compure_idf inline.
+
 2019-10-01  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/91925
index 870b237..2e3dfec 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-O2 -fdump-tree-fre3 -fdump-tree-optimized -fdelete-null-pointer-checks" }
+// { dg-options "-O2 -fdump-tree-fre3 -fdump-tree-optimized -fdelete-null-pointer-checks --param early-inlining-insns-O2=14" }
 
 #define assume(x) if(!(x))__builtin_unreachable()
 
index 1f115b2..5bc1ef0 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1" } */
+/* { dg-options "-O -fno-tree-sra -fdump-tree-fre1 --param early-inlining-insns-O2=14" } */
 
 int f();
 
index 8306601..49dde0a 100644 (file)
@@ -1,7 +1,7 @@
 /* PR/tree-optimization/84480 - bogus -Wstringop-truncation despite
    assignment with an inlined string literal
    { dg-do compile }
-   { dg-options "-O2 -Wstringop-truncation" }  */
+   { dg-options "-O2 -Wstringop-truncation --param early-inlining-insns-O2=14" }  */
 
 #include <string.h>
 
index b5374c5..5873954 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-optimized"  } */
+/* { dg-options "-O2 -fdump-tree-optimized --param early-inlining-insns-O2=14"  } */
 #define _UNUSED_ __attribute__((__unused__))
 
 typedef int TEST_F30 (int *v);
index 6752676..216de23 100644 (file)
@@ -56,7 +56,7 @@ bmp_iter_and_compl (bitmap_iterator * bi, unsigned *bit_no)
 }
 
 extern int VEC_int_base_length (VEC_int_base *);
-bitmap
+inline bitmap
 compute_idf (bitmap def_blocks, bitmap_head * dfs)
 {
   bitmap_iterator bi;
index 8c79f29..a0316f1 100644 (file)
@@ -1,6 +1,6 @@
 /* PR middle-end/66142 */
 /* { dg-do compile } */
-/* { dg-additional-options "-ffast-math -fopenmp-simd" } */
+/* { dg-additional-options "-ffast-math -fopenmp-simd --param early-inlining-insns-O2=14" } */
 /* { dg-additional-options "-mavx" { target avx_runtime } } */
 
 struct A { float x, y; };