Commit 7349698e by Jan Hubicka Committed by Jan Hubicka

ipa-profile.c (ipa_propagate_frequency_1): Use count instead of frequency.

	* 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.

From-SVN: r255104
parent 0009a6c3
2017-11-23 Jan Hubicka <hubicka@ucw.cz> 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 * ipa-fnsummary.c (record_modified_bb_info): Use sreal
frequencies. Fix estimation of aggregate parameters. frequencies. Fix estimation of aggregate parameters.
...@@ -2024,7 +2024,7 @@ cgraph_edge::dump_edge_flags (FILE *f) ...@@ -2024,7 +2024,7 @@ cgraph_edge::dump_edge_flags (FILE *f)
fprintf (f, "("); fprintf (f, "(");
count.dump (f); count.dump (f);
fprintf (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) if (can_throw_external)
fprintf (f, "(can throw external) "); fprintf (f, "(can throw external) ");
...@@ -2811,15 +2811,11 @@ cgraph_edge::maybe_hot_p (void) ...@@ -2811,15 +2811,11 @@ cgraph_edge::maybe_hot_p (void)
if (symtab->state < IPA_SSA) if (symtab->state < IPA_SSA)
return true; return true;
if (caller->frequency == NODE_FREQUENCY_EXECUTED_ONCE if (caller->frequency == NODE_FREQUENCY_EXECUTED_ONCE
&& frequency () < CGRAPH_FREQ_BASE * 3 / 2) && sreal_frequency () * 2 < 3)
return false; return false;
if (opt_for_fn (caller->decl, flag_guess_branch_prob))
{
if (PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) == 0 if (PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) == 0
|| frequency () <= (CGRAPH_FREQ_BASE || sreal_frequency () * PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) <= 1)
/ PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION)))
return false; return false;
}
return true; return true;
} }
...@@ -3880,9 +3876,7 @@ cgraph_node::has_thunk_p (cgraph_node *node, void *) ...@@ -3880,9 +3876,7 @@ cgraph_node::has_thunk_p (cgraph_node *node, void *)
return false; return false;
} }
/* Expected frequency of executions within the function. /* 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. */
sreal sreal
cgraph_edge::sreal_frequency () cgraph_edge::sreal_frequency ()
......
...@@ -340,7 +340,7 @@ ipa_propagate_frequency_1 (struct cgraph_node *node, void *data) ...@@ -340,7 +340,7 @@ ipa_propagate_frequency_1 (struct cgraph_node *node, void *data)
&& edge->caller->global.inlined_to->frequency && edge->caller->global.inlined_to->frequency
!= NODE_FREQUENCY_UNLIKELY_EXECUTED))) != NODE_FREQUENCY_UNLIKELY_EXECUTED)))
d->maybe_unlikely_executed = false; d->maybe_unlikely_executed = false;
if (!edge->frequency ()) if (edge->count.initialized_p () && !edge->count.nonzero_p ())
continue; continue;
switch (edge->caller->frequency) switch (edge->caller->frequency)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment