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
This commit is contained in:
Jan Hubicka 2017-11-23 16:59:07 +01:00 committed by Jan Hubicka
parent 0009a6c3c7
commit 7349698ee4
3 changed files with 14 additions and 13 deletions

View File

@ -1,3 +1,10 @@
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

View File

@ -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 ()

View File

@ -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)
{