aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2019-01-05 23:47:24 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2019-01-05 22:47:24 +0000
commitf256c2743099dca4e5708d51d423c6ca70c4afb6 (patch)
treee728e6206f4450d4d3306086625736287922b6d3 /gcc
parentbeb04ce9d4d6b30ca881ff7f5ebd143433f84722 (diff)
downloadgcc-f256c2743099dca4e5708d51d423c6ca70c4afb6.zip
gcc-f256c2743099dca4e5708d51d423c6ca70c4afb6.tar.gz
gcc-f256c2743099dca4e5708d51d423c6ca70c4afb6.tar.bz2
invoke.texi (max-inline-insns-small): New parameters.
* doc/invoke.texi (max-inline-insns-small): New parameters. * ipa-inline.c (want_early_inline_function_p): simplify. (want_inline_small_function_p): Fix pasto from previous patch; use max-inline-insns-small bound. * params.def (max-inline-insns-small): New param. * ipa-fnsummary.c (analyze_function_body): Initialize time/size variables correctly. From-SVN: r267603
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/doc/invoke.texi4
-rw-r--r--gcc/ipa-fnsummary.c4
-rw-r--r--gcc/ipa-inline.c10
-rw-r--r--gcc/params.def5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipcp-2.c2
7 files changed, 30 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1cf9aae..a231aee 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,15 @@
2019-01-05 Jan Hubicka <hubicka@ucw.cz>
+ * doc/invoke.texi (max-inline-insns-small): New parameters.
+ * ipa-inline.c (want_early_inline_function_p): simplify.
+ (want_inline_small_function_p): Fix pasto from previous patch;
+ use max-inline-insns-small bound.
+ * params.def (max-inline-insns-small): New param.
+ * ipa-fnsummary.c (analyze_function_body): Initialize time/size
+ variables correctly.
+
+2019-01-05 Jan Hubicka <hubicka@ucw.cz>
+
* doc/invoke.texi: Document max-inline-insns-size,
uninlined-function-insns, uninlined-function-time,
uninlined-thunk-insns and uninlined-thunk-time.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 3501a62..0706db6 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -11007,6 +11007,10 @@ by the compiler are investigated. To those functions, a different
(more restrictive) limit compared to functions declared inline can
be applied.
+@item max-inline-insns-small
+This is bound applied to calls which are considered relevant with
+@option{-finline-small-functions}.
+
@item max-inline-insns-size
This is bound applied to calls which are optimized for size. Small growth
may be desirable to anticipate optimization oppurtunities exposed by inlining.
diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c
index 1f5ff98..6bc9cb3 100644
--- a/gcc/ipa-fnsummary.c
+++ b/gcc/ipa-fnsummary.c
@@ -1969,9 +1969,9 @@ fp_expression_p (gimple *stmt)
static void
analyze_function_body (struct cgraph_node *node, bool early)
{
- sreal time = 0;
+ sreal time = PARAM_VALUE (PARAM_UNINLINED_FUNCTION_TIME);
/* Estimate static overhead for function prologue/epilogue and alignment. */
- int size = 2;
+ int size = PARAM_VALUE (PARAM_UNINLINED_FUNCTION_INSNS);
/* Benefits are scaled by probability of elimination that is in range
<0,2>. */
basic_block bb;
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index b51e228..73da38c 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -637,8 +637,7 @@ want_early_inline_function_p (struct cgraph_edge *e)
if (growth <= PARAM_VALUE (PARAM_MAX_INLINE_INSNS_SIZE))
;
- else if (!e->maybe_hot_p ()
- && growth > 0)
+ else if (!e->maybe_hot_p ())
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, e->call_stmt,
@@ -791,7 +790,7 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report)
ipa_hints hints = estimate_edge_hints (e);
int big_speedup = -1; /* compute this lazily */
- if (growth <= PARAM_VALUE (PARAM_VALUE (PARAM_MAX_INLINE_INSNS_SIZE)))
+ if (growth <= PARAM_VALUE (PARAM_MAX_INLINE_INSNS_SIZE))
;
/* Apply MAX_INLINE_INSNS_SINGLE limit. Do not do so when
hints suggests that inlining given function is very profitable. */
@@ -809,9 +808,8 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report)
want_inline = false;
}
else if (!DECL_DECLARED_INLINE_P (callee->decl)
- && (in_lto_p
- && growth >= PARAM_VALUE (PARAM_EARLY_INLINING_INSNS))
- && !opt_for_fn (e->caller->decl, flag_inline_functions))
+ && !opt_for_fn (e->caller->decl, flag_inline_functions)
+ && growth >= PARAM_VALUE (PARAM_MAX_INLINE_INSNS_SMALL))
{
/* growth_likely_positive is expensive, always test it last. */
if (growth >= MAX_INLINE_INSNS_SINGLE
diff --git a/gcc/params.def b/gcc/params.def
index b89b475..0e08db2 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -83,6 +83,11 @@ DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO,
"The maximum number of instructions when automatically inlining.",
30, 0, 0)
+DEFPARAM (PARAM_MAX_INLINE_INSNS_SMALL,
+ "max-inline-insns-small",
+ "The maximum number of instructions when automatically inlining small functions.",
+ 0, 0, 0)
+
DEFPARAM (PARAM_MAX_INLINE_INSNS_SIZE,
"max-inline-insns-size",
"The maximum number of instructions when inlining for size.",
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fe449c2..bbc65cb 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-01-05 Jan Hubicka <hubicka@ucw.cz>
+
+ * gcc.dg/ipa/ipcp-2.c: Update bounds.
+
2019-01-05 Dominique d'Humieres <dominiq@gcc.gnu.org>
* gcc.dg/plugin/plugindir1.c: Adjust dg-prune-output for Darwin.
diff --git a/gcc/testsuite/gcc.dg/ipa/ipcp-2.c b/gcc/testsuite/gcc.dg/ipa/ipcp-2.c
index 6b6fc4e..74b2c03 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipcp-2.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipcp-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining --param ipa-cp-eval-threshold=80" } */
+/* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining --param ipa-cp-eval-threshold=200" } */
/* { dg-add-options bind_pic_locally } */
extern int get_stuff (int);