diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2018-01-14 12:20:31 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2018-01-14 11:20:31 +0000 |
commit | 3f05a4f0727bac6f4456fbbecdc1315cc8bd59cf (patch) | |
tree | d9cb2c24510576f53ed1943d209df058e1162c80 | |
parent | 01b9bf0615e178e6c31f8d010cb8df9382b3c2d4 (diff) | |
download | gcc-3f05a4f0727bac6f4456fbbecdc1315cc8bd59cf.zip gcc-3f05a4f0727bac6f4456fbbecdc1315cc8bd59cf.tar.gz gcc-3f05a4f0727bac6f4456fbbecdc1315cc8bd59cf.tar.bz2 |
re PR ipa/83051 (ICE on valid code at -O3: in edge_badness, at ipa-inline.c:1024)
PR ipa/83051
* gcc.c-torture/compile/pr83051.c: New testcase.
* ipa-inline.c (edge_badness): Tolerate roundoff errors.
From-SVN: r256659
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ipa-inline.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr83051.c | 31 |
4 files changed, 43 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index abce2c8..ed1e0ef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-01-14 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/83051 + * ipa-inline.c (edge_badness): Tolerate roundoff errors. + 2018-01-14 Richard Sandiford <richard.sandiford@linaro.org> * ipa-inline.c (want_inline_small_function_p): Return false if diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index c3acfb29..145ffbb 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 d8263d6..c07fada 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-01-14 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/83051 + * gcc.c-torture/compile/pr83051.c: New testcase. + 2018-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> 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 0000000..133cabc --- /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; +} |