aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2017-11-16 17:50:47 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2017-11-16 16:50:47 +0000
commitb71289b1efb995c2a0d233105e06df81b764c503 (patch)
tree147b0c8e02c69feb8d77653d9080514bd892f6ee
parent913f8c088eb3b2d6e2c7a55954de4e0c38d78766 (diff)
downloadgcc-b71289b1efb995c2a0d233105e06df81b764c503.zip
gcc-b71289b1efb995c2a0d233105e06df81b764c503.tar.gz
gcc-b71289b1efb995c2a0d233105e06df81b764c503.tar.bz2
ipa-fnsummary.c (analyze_function_body): Accumulate time consistently in sreal.
* ipa-fnsummary.c (analyze_function_body): Accumulate time consistently in sreal. * gcc.dg/ipa/ipcp-2.c: Lower threshold. From-SVN: r254834
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ipa-fnsummary.c17
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipcp-2.c2
4 files changed, 17 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5ad2d99..9c1eb3d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2017-11-16 Jan Hubicka <hubicka@ucw.cz>
+ * ipa-fnsummary.c (analyze_function_body): Accumulate time consistently
+ in sreal.
+
+2017-11-16 Jan Hubicka <hubicka@ucw.cz>
+
* predict.c (combine_predictions_for_bb): Preserve zero predicted
eges.
(expensive_function_p): Remove useless assert.
diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c
index 8e26e7e..1b99194 100644
--- a/gcc/ipa-fnsummary.c
+++ b/gcc/ipa-fnsummary.c
@@ -1986,7 +1986,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
<0,2>. */
basic_block bb;
struct function *my_function = DECL_STRUCT_FUNCTION (node->decl);
- int freq;
+ sreal freq;
struct ipa_fn_summary *info = ipa_fn_summaries->get (node);
predicate bb_predicate;
struct ipa_func_body_info fbi;
@@ -2052,7 +2052,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
for (n = 0; n < nblocks; n++)
{
bb = BASIC_BLOCK_FOR_FN (cfun, order[n]);
- freq = compute_call_stmt_bb_frequency (node->decl, bb);
+ freq = bb->count.to_sreal_scale (ENTRY_BLOCK_PTR_FOR_FN (cfun)->count);
if (clobber_only_eh_bb_p (bb))
{
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -2127,7 +2127,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
fprintf (dump_file, " ");
print_gimple_stmt (dump_file, stmt, 0);
fprintf (dump_file, "\t\tfreq:%3.2f size:%3i time:%3i\n",
- ((double) freq) / CGRAPH_FREQ_BASE, this_size,
+ freq.to_double (), this_size,
this_time);
}
@@ -2201,7 +2201,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
will_be_nonconstant = true;
if (this_time || this_size)
{
- this_time *= freq;
+ sreal final_time = (sreal)this_time * freq;
prob = eliminated_by_inlining_prob (stmt);
if (prob == 1 && dump_file && (dump_flags & TDF_DETAILS))
@@ -2218,7 +2218,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
if (*(is_gimple_call (stmt) ? &bb_predicate : &p) != false)
{
- time += this_time;
+ time += final_time;
size += this_size;
}
@@ -2231,14 +2231,12 @@ analyze_function_body (struct cgraph_node *node, bool early)
{
predicate ip = bb_predicate & predicate::not_inlined ();
info->account_size_time (this_size * prob,
- (sreal)(this_time * prob)
- / (CGRAPH_FREQ_BASE * 2), ip,
+ (this_time * prob) / 2, ip,
p);
}
if (prob != 2)
info->account_size_time (this_size * (2 - prob),
- (sreal)(this_time * (2 - prob))
- / (CGRAPH_FREQ_BASE * 2),
+ (this_time * (2 - prob) / 2),
bb_predicate,
p);
}
@@ -2256,7 +2254,6 @@ analyze_function_body (struct cgraph_node *node, bool early)
}
}
set_hint_predicate (&ipa_fn_summaries->get (node)->array_index, array_index);
- time = time / CGRAPH_FREQ_BASE;
free (order);
if (nonconstant_names.exists () && !early)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a932323..d8db9ac 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2017-11-16 Jan Hubicka <hubicka@ucw.cz>
+
+ * gcc.dg/ipa/ipcp-2.c: Lower threshold.
+
2017-11-16 Martin Sebor <msebor@redhat.com>
PR middle-end/63477
diff --git a/gcc/testsuite/gcc.dg/ipa/ipcp-2.c b/gcc/testsuite/gcc.dg/ipa/ipcp-2.c
index c9e71eb..6b6fc4e 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=100" } */
+/* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining --param ipa-cp-eval-threshold=80" } */
/* { dg-add-options bind_pic_locally } */
extern int get_stuff (int);