aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2019-10-01 18:58:35 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2019-10-01 16:58:35 +0000
commit0b92cf305dcf34387a8e2564e55ca8948df3b47a (patch)
tree1158f5583f8db80f0e72fac426c41a28d1013694 /gcc
parent7552c36afa1f9058bb39f336ae84f019621885a0 (diff)
downloadgcc-0b92cf305dcf34387a8e2564e55ca8948df3b47a.zip
gcc-0b92cf305dcf34387a8e2564e55ca8948df3b47a.tar.gz
gcc-0b92cf305dcf34387a8e2564e55ca8948df3b47a.tar.bz2
invoke.texi (early-inlining-insns-O2): Document.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/doc/invoke.texi8
-rw-r--r--gcc/ipa-inline.c22
-rw-r--r--gcc/params.def6
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr61034.C2
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr8781.C2
-rw-r--r--gcc/testsuite/g++.dg/warn/Wstringop-truncation-1.C2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pr63416.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr66142.c2
11 files changed, 50 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bb4de20..b4c4292 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 83016a5..4281ee7 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -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
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index b62d280..c8689c7 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -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;
}
}
diff --git a/gcc/params.def b/gcc/params.def
index d2d957f..0acf29b 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -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.",
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index df6105f..0dcaf4b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr61034.C b/gcc/testsuite/g++.dg/tree-ssa/pr61034.C
index 870b237..2e3dfec 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr61034.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr61034.C
@@ -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()
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr8781.C b/gcc/testsuite/g++.dg/tree-ssa/pr8781.C
index 1f115b2..5bc1ef0 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr8781.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr8781.C
@@ -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();
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-truncation-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-truncation-1.C
index 8306601..49dde0a 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-truncation-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-truncation-1.C
@@ -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>
diff --git a/gcc/testsuite/gcc.dg/ipa/pr63416.c b/gcc/testsuite/gcc.dg/ipa/pr63416.c
index b5374c5..5873954 100644
--- a/gcc/testsuite/gcc.dg/ipa/pr63416.c
+++ b/gcc/testsuite/gcc.dg/ipa/pr63416.c
@@ -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);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c
index 6752676..216de23 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c
@@ -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;
diff --git a/gcc/testsuite/gcc.dg/vect/pr66142.c b/gcc/testsuite/gcc.dg/vect/pr66142.c
index 8c79f29..a0316f1 100644
--- a/gcc/testsuite/gcc.dg/vect/pr66142.c
+++ b/gcc/testsuite/gcc.dg/vect/pr66142.c
@@ -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; };