From: Richard Biener Date: Wed, 22 Nov 2017 08:47:47 +0000 (+0000) Subject: re PR tree-optimization/83089 (ICE: Segmentation fault (in instantiate_scev_name)) X-Git-Tag: basepoints/gcc-9~3146 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8f8e53262b59836866fee7e4381117fcf6dc7b38;p=thirdparty%2Fgcc.git re PR tree-optimization/83089 (ICE: Segmentation fault (in instantiate_scev_name)) 2017-11-22 Richard Biener PR tree-optimization/83089 * tree-if-conv.c (pass_if_conversion::execute): If anything changed reset SCEV and free the number of iteration estimates. * gcc.dg/pr83089.c: New testcase. From-SVN: r255044 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 60af13ab3507..fb8de9ac8b68 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-11-22 Richard Biener + + PR tree-optimization/83089 + * tree-if-conv.c (pass_if_conversion::execute): If anything + changed reset SCEV and free the number of iteration estimates. + 2017-11-21 Martin Sebor PR tree-optimization/82945 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b3e371e6e315..e3ea2f52ceb3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-11-22 Richard Biener + + PR tree-optimization/83089 + * gcc.dg/pr83089.c: New testcase. + 2017-11-21 David Malcolm PR c/83056 diff --git a/gcc/testsuite/gcc.dg/pr83089.c b/gcc/testsuite/gcc.dg/pr83089.c new file mode 100644 index 000000000000..4508948eeee4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr83089.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-loop-if-convert -ftree-parallelize-loops=2" } */ + +int rl, s8; + +void +it (int zy, short int el) +{ + int hb; + + while (el != 0) + { + hb = el; + for (rl = 0; rl < 200; ++rl) + { + for (s8 = 0; s8 < 2; ++s8) + { + } + if (s8 < 3) + zy = hb; + if (hb == 0) + ++s8; + zy += (s8 != -1); + } + el = zy; + } +} diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index c74c80305f9d..37695c2cafe3 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -2959,6 +2959,12 @@ pass_if_conversion::execute (function *fun) && !loop->dont_vectorize)) todo |= tree_if_conversion (loop); + if (todo) + { + free_numbers_of_iterations_estimates (fun); + scev_reset (); + } + if (flag_checking) { basic_block bb;