From 9732f43e1cbf1d5025a049fb47a3e4c7b375410a Mon Sep 17 00:00:00 2001 From: hubicka Date: Sun, 14 Jan 2018 11:20:31 +0000 Subject: [PATCH] PR ipa/83051 * gcc.c-torture/compile/pr83051.c: New testcase. * ipa-inline.c (edge_badness): Tolerate roundoff errors. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256659 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/ipa-inline.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/compile/pr83051.c | 31 +++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr83051.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index abce2c83d53..ed1e0ef1324 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-01-14 Jan Hubicka + + PR ipa/83051 + * ipa-inline.c (edge_badness): Tolerate roundoff errors. + 2018-01-14 Richard Sandiford * ipa-inline.c (want_inline_small_function_p): Return false if diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index c3acfb29b40..145ffbb5ef0 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -997,7 +997,8 @@ edge_badness (struct cgraph_edge *edge, bool dump) /* Check that inlined time is better, but tolerate some roundoff issues. FIXME: When callee profile drops to 0 we account calls more. This should be fixed by never doing that. */ - gcc_checking_assert ((edge_time - callee_info->time).to_int () <= 0 + gcc_checking_assert ((edge_time * 100 + - callee_info->time * 101).to_int () <= 0 || callee->count.ipa ().initialized_p ()); gcc_checking_assert (growth <= callee_info->size); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d8263d6ab3a..c07fada1ac8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-01-14 Jan Hubicka + + PR ipa/83051 + * gcc.c-torture/compile/pr83051.c: New testcase. + 2018-01-14 Prathamesh Kulkarni PR tree-optimization/83501 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr83051.c b/gcc/testsuite/gcc.c-torture/compile/pr83051.c new file mode 100644 index 00000000000..133cabc538b --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr83051.c @@ -0,0 +1,31 @@ + +int a[1], b, c, d, e, f, g, h; + +void fn1 (int p) +{ + b = b >> 8 ^ a[b ^ (c & 5)] >> 8 ^ a[(b ^ c) & 5]; + b = b >> 8 ^ a[(b ^ c) & 5]; +} + +static void fn2 () +{ + int k; + while (1) + while (e) + { + while (g) + while (h) + for (k = 0; k < 6; k++) + while (f) + fn1 (0); + fn1 (0); + fn1 (0); + fn1 (0); + } +} + +int main () +{ + fn2 (); + return 0; +} -- 2.11.4.GIT