Commit e3bd08dd by Jan Hubicka Committed by Jan Hubicka

ipa-fnsummary.c (ipa_call_context::estimate_size_and_time): Fix calculation of min_size.


	* ipa-fnsummary.c (ipa_call_context::estimate_size_and_time): Fix
	calculation of min_size.
	(ipa_update_overall_fn_summary): Likewise.

From-SVN: r278006
parent 83263ef5
2019-11-09 Jan Hubicka <hubicka@ucw.cz> 2019-11-09 Jan Hubicka <hubicka@ucw.cz>
* ipa-fnsummary.c (ipa_call_context::estimate_size_and_time): Fix
calculation of min_size.
(ipa_update_overall_fn_summary): Likewise.
2019-11-09 Jan Hubicka <hubicka@ucw.cz>
* ipa-fnsummary.c (estimate_edge_size_and_time): Do not call * ipa-fnsummary.c (estimate_edge_size_and_time): Do not call
estimate_edge_devirt_benefit when not computing hints; estimate_edge_devirt_benefit when not computing hints;
do not compute time when not asked for. do not compute time when not asked for.
...@@ -3243,6 +3243,7 @@ ipa_call_context::estimate_size_and_time (int *ret_size, ...@@ -3243,6 +3243,7 @@ ipa_call_context::estimate_size_and_time (int *ret_size,
sreal nonspecialized_time = time; sreal nonspecialized_time = time;
min_size += (*info->size_time_table)[0].size;
for (i = 0; vec_safe_iterate (info->size_time_table, i, &e); i++) for (i = 0; vec_safe_iterate (info->size_time_table, i, &e); i++)
{ {
bool exec = e->exec_predicate.evaluate (m_nonspec_possible_truths); bool exec = e->exec_predicate.evaluate (m_nonspec_possible_truths);
...@@ -3288,7 +3289,7 @@ ipa_call_context::estimate_size_and_time (int *ret_size, ...@@ -3288,7 +3289,7 @@ ipa_call_context::estimate_size_and_time (int *ret_size,
} }
gcc_checking_assert ((*info->size_time_table)[0].exec_predicate == true); gcc_checking_assert ((*info->size_time_table)[0].exec_predicate == true);
gcc_checking_assert ((*info->size_time_table)[0].nonconst_predicate == true); gcc_checking_assert ((*info->size_time_table)[0].nonconst_predicate == true);
min_size = (*info->size_time_table)[0].size; gcc_checking_assert (min_size >= 0);
gcc_checking_assert (size >= 0); gcc_checking_assert (size >= 0);
gcc_checking_assert (time >= 0); gcc_checking_assert (time >= 0);
/* nonspecialized_time should be always bigger than specialized time. /* nonspecialized_time should be always bigger than specialized time.
...@@ -3685,12 +3686,13 @@ ipa_update_overall_fn_summary (struct cgraph_node *node) ...@@ -3685,12 +3686,13 @@ ipa_update_overall_fn_summary (struct cgraph_node *node)
size_info->size += e->size; size_info->size += e->size;
info->time += e->time; info->time += e->time;
} }
info->min_size = (*info->size_time_table)[0].size;
estimate_calls_size_and_time (node, &size_info->size, &info->min_size, estimate_calls_size_and_time (node, &size_info->size, &info->min_size,
&info->time, NULL, &info->time, NULL,
~(clause_t) (1 << predicate::false_condition), ~(clause_t) (1 << predicate::false_condition),
vNULL, vNULL, vNULL); vNULL, vNULL, vNULL);
size_info->size = (size_info->size + ipa_fn_summary::size_scale / 2) size_info->size = RDIV (size_info->size, ipa_fn_summary::size_scale);
/ ipa_fn_summary::size_scale; info->min_size = RDIV (info->min_size, ipa_fn_summary::size_scale);
} }
......
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