aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cgraph.c18
-rw-r--r--gcc/ipa-profile.c2
3 files changed, 14 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 56b9473..b9852e9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2017-11-23 Jan Hubicka <hubicka@ucw.cz>
+ * ipa-profile.c (ipa_propagate_frequency_1): Use count instead of
+ frequency.
+ * cgraph.c (cgraph_edge::dump_edge_flags): Dump sreal frequencies.
+ (cgraph_edge::maybe_hot_p): Use sreal frequencies.
+
+2017-11-23 Jan Hubicka <hubicka@ucw.cz>
+
* ipa-fnsummary.c (record_modified_bb_info): Use sreal
frequencies. Fix estimation of aggregate parameters.
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 69eb9bb..7ac58ce 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -2024,7 +2024,7 @@ cgraph_edge::dump_edge_flags (FILE *f)
fprintf (f, "(");
count.dump (f);
fprintf (f, ",");
- fprintf (f, "%.2f per call) ", frequency () / (double)CGRAPH_FREQ_BASE);
+ fprintf (f, "%.2f per call) ", sreal_frequency ().to_double ());
}
if (can_throw_external)
fprintf (f, "(can throw external) ");
@@ -2811,15 +2811,11 @@ cgraph_edge::maybe_hot_p (void)
if (symtab->state < IPA_SSA)
return true;
if (caller->frequency == NODE_FREQUENCY_EXECUTED_ONCE
- && frequency () < CGRAPH_FREQ_BASE * 3 / 2)
+ && sreal_frequency () * 2 < 3)
+ return false;
+ if (PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) == 0
+ || sreal_frequency () * PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) <= 1)
return false;
- if (opt_for_fn (caller->decl, flag_guess_branch_prob))
- {
- if (PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) == 0
- || frequency () <= (CGRAPH_FREQ_BASE
- / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION)))
- return false;
- }
return true;
}
@@ -3880,9 +3876,7 @@ cgraph_node::has_thunk_p (cgraph_node *node, void *)
return false;
}
-/* Expected frequency of executions within the function.
- When set to CGRAPH_FREQ_BASE, the edge is expected to be called once
- per function call. The range is 0 to CGRAPH_FREQ_MAX. */
+/* Expected frequency of executions within the function. */
sreal
cgraph_edge::sreal_frequency ()
diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c
index cdcd050..7c7c0d0 100644
--- a/gcc/ipa-profile.c
+++ b/gcc/ipa-profile.c
@@ -340,7 +340,7 @@ ipa_propagate_frequency_1 (struct cgraph_node *node, void *data)
&& edge->caller->global.inlined_to->frequency
!= NODE_FREQUENCY_UNLIKELY_EXECUTED)))
d->maybe_unlikely_executed = false;
- if (!edge->frequency ())
+ if (edge->count.initialized_p () && !edge->count.nonzero_p ())
continue;
switch (edge->caller->frequency)
{