re PR tree-optimization/71575 ([graphite] internal compiler error: in copy_cond_phi_n...
authorRichard Biener <rguenther@suse.de>
Fri, 11 Nov 2016 12:54:25 +0000 (12:54 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 11 Nov 2016 12:54:25 +0000 (12:54 +0000)
2016-11-11  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71575
* graphite-isl-ast-to-gimple.c (copy_cond_phi_nodes): Remove
bogus assert.

* gcc.dg/graphite/pr71575-1.c: New testcase.
* gcc.dg/graphite/pr71575-2.c: Likewise.

From-SVN: r242069

gcc/ChangeLog
gcc/graphite-isl-ast-to-gimple.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/graphite/pr71575-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/graphite/pr71575-2.c [new file with mode: 0644]

index 5ca356d7b1399ccc3dccfb5bb81cbba1906ff281..5c0f8976aaf417cac1916ede9640c759cf9c480b 100644 (file)
@@ -1,3 +1,9 @@
+2016-11-11  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/71575
+       * graphite-isl-ast-to-gimple.c (copy_cond_phi_nodes): Remove
+       bogus assert.
+
 2016-11-11  Richard Biener  <rguenther@suse.de>
 
        PR middle-end/78295
index 0eb564ad2a25893f5751a0caeb72af78af1d6595..209eadab0a65db3f052b22373b21355b92cb2bf4 100644 (file)
@@ -2505,9 +2505,6 @@ copy_cond_phi_nodes (basic_block bb, basic_block new_bb, vec<tree> iv_map)
       tree res = gimple_phi_result (phi);
       if (virtual_operand_p (res))
        continue;
-      if (is_gimple_reg (res) && scev_analyzable_p (res, region->region))
-       /* Cond phi nodes should not be scev_analyzable_p.  */
-       gcc_unreachable ();
 
       gphi *new_phi = create_phi_node (SSA_NAME_VAR (res), new_bb);
       tree new_res = create_new_def_for (res, new_phi,
index acec6d953438f28cb7fd1409f0370a5cb7f1dc5b..87f09bd42595875140a12d793b3c2aa08272250b 100644 (file)
@@ -1,3 +1,9 @@
+2016-11-11  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/71575
+       * gcc.dg/graphite/pr71575-1.c: New testcase.
+       * gcc.dg/graphite/pr71575-2.c: Likewise.
+
 2016-11-11  Richard Biener  <rguenther@suse.de>
 
        PR middle-end/78295
diff --git a/gcc/testsuite/gcc.dg/graphite/pr71575-1.c b/gcc/testsuite/gcc.dg/graphite/pr71575-1.c
new file mode 100644 (file)
index 0000000..4a8623e
--- /dev/null
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -floop-nest-optimize" } */
+
+void w(int x, double *y)
+{
+  int i, j;
+  double a;
+  double c[32];
+
+  for (i = 0; i < x; i++) {
+      for (j = 0; j < x - i; j++) {
+         c[j] = y[i];
+      }
+      y[i] = a;
+      a += c[0] + y[i];
+  }
+}
+
+void v(int x, double *y)
+{
+  w(x, y);
+}
diff --git a/gcc/testsuite/gcc.dg/graphite/pr71575-2.c b/gcc/testsuite/gcc.dg/graphite/pr71575-2.c
new file mode 100644 (file)
index 0000000..24bc957
--- /dev/null
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-Ofast -floop-nest-optimize" } */
+
+int *a;
+int b, c, d, e, g;
+char f;
+
+void fn1() {
+    for (; c;) {
+       b = 0;
+       for (; b <= 2; b++) {
+           unsigned **h = (unsigned **) &a[b];
+           *h = (unsigned *)(__UINTPTR_TYPE__)((g && (e = d)) != f++);
+       }
+    }
+}