From 8f8e53262b59836866fee7e4381117fcf6dc7b38 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 22 Nov 2017 08:47:47 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr83089.c | 27 +++++++++++++++++++++++++++ gcc/tree-if-conv.c | 6 ++++++ 4 files changed, 44 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr83089.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 60af13ab350..fb8de9ac8b6 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 b3e371e6e31..e3ea2f52ceb 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 00000000000..4508948eeee --- /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 c74c80305f9..37695c2cafe 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; -- 2.30.2