re PR tree-optimization/83089 (ICE: Segmentation fault (in instantiate_scev_name))
authorRichard Biener <rguenther@suse.de>
Wed, 22 Nov 2017 08:47:47 +0000 (08:47 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 22 Nov 2017 08:47:47 +0000 (08:47 +0000)
2017-11-22  Richard Biener  <rguenther@suse.de>

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
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr83089.c [new file with mode: 0644]
gcc/tree-if-conv.c

index 60af13ab3507dedb8b987a47da61a84bc59af338..fb8de9ac8b686479888814f8c8119bd00ae57f77 100644 (file)
@@ -1,3 +1,9 @@
+2017-11-22  Richard Biener  <rguenther@suse.de>
+
+       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  <msebor@redhat.com>
 
        PR tree-optimization/82945
index b3e371e6e3159b73cc1e23be78f9ff1f0e7ef240..e3ea2f52ceb333eda30ea9e10218c9e09d937129 100644 (file)
@@ -1,3 +1,8 @@
+2017-11-22  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/83089
+       * gcc.dg/pr83089.c: New testcase.
+
 2017-11-21  David Malcolm  <dmalcolm@redhat.com>
 
        PR c/83056
diff --git a/gcc/testsuite/gcc.dg/pr83089.c b/gcc/testsuite/gcc.dg/pr83089.c
new file mode 100644 (file)
index 0000000..4508948
--- /dev/null
@@ -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;
+    }
+}
index c74c80305f9df56115b748df28fa4982fd3b40bb..37695c2cafe330a580b73ebf5a416c0fc88e607a 100644 (file)
@@ -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;