ipa-inline-analysis.c (estimate_node_size_and_time): Allow roundoff errors when comparing specialized and unspecialized times.

* ipa-inline-analysis.c (estimate_node_size_and_time): Allow roundoff
	errors when comparing specialized and unspecialized times.

From-SVN: r247528
This commit is contained in:
Jan Hubicka 2017-05-03 00:35:24 +02:00 committed by Jan Hubicka
parent c3b7315113
commit 0e8d6eb794
2 changed files with 19 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2017-05-02 Jan Hubicka <hubicka@ucw.cz>
* ipa-inline-analysis.c (estimate_node_size_and_time): Allow roundoff
errors when comparing specialized and unspecialized times.
2017-05-02 David Malcolm <dmalcolm@redhat.com>
* diagnostic-show-locus.c
@ -354,6 +359,11 @@
if the only reason why modified_in_p returned true is that
addr is SP based and set_insn is a push or pop.
2017-04-29 Jan Hubicka <hubicka@ucw.cz>
* ipa-inline.c (compute_inlined_call_time): Remove now unnecesary
overflow check.
2017-04-29 Jan Hubicka <hubicka@ucw.cz>
PR ipa/79224

View File

@ -3422,7 +3422,15 @@ estimate_node_size_and_time (struct cgraph_node *node,
min_size = (*info->entry)[0].size;
gcc_checking_assert (size >= 0);
gcc_checking_assert (time >= 0);
gcc_checking_assert (nonspecialized_time >= time);
/* nonspecialized_time should be always bigger than specialized time.
Roundoff issues however may get into the way. */
gcc_checking_assert ((nonspecialized_time - time) >= -1);
/* Roundoff issues may make specialized time bigger than nonspecialized
time. We do not really want that to happen because some heurstics
may get confused by seeing negative speedups. */
if (time > nonspecialized_time)
time = nonspecialized_time;
if (info->loop_iterations
&& !evaluate_predicate (info->loop_iterations, possible_truths))