re PR tree-optimization/92085 (ICE: tree check: expected class 'type', have 'exceptio...
authorPrathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Tue, 15 Oct 2019 07:19:41 +0000 (07:19 +0000)
committerPrathamesh Kulkarni <prathamesh3492@gcc.gnu.org>
Tue, 15 Oct 2019 07:19:41 +0000 (07:19 +0000)
2019-10-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

PR tree-optimization/92085
* tree-if-conv.c (ifcvt_local_dce): Call gsi_next in else clause,
instead of calling it unconditionally after
delete_dead_or_redundant_assignment and fix indentation.

testsuite/
* gcc.dg/tree-ssa/pr92085-1.c: New test.
* gcc.dg/tree-ssa/pr92085-2.c: Likewise.

From-SVN: r276984

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/pr92085-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/pr92085-2.c [new file with mode: 0644]
gcc/tree-if-conv.c

index 9957d2cbc744871dfb5f50531764aad32f2f6cf4..91809ca9c071f6867cb8beb4fcc9020c8d50e628 100644 (file)
@@ -1,3 +1,10 @@
+2019-10-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+
+       PR tree-optimization/92085
+       * tree-if-conv.c (ifcvt_local_dce): Call gsi_next in else clause,
+       instead of calling it unconditionally after
+       delete_dead_or_redundant_assignment and fix indentation.
+
 2019-10-15  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
 
        * config/arm/vfp.md (fma<SDF:mode>4): Enable DF only when
index 0285490cd6cdf5a542e6bfb1bec96009506e2216..ae169070ed52202204c65ee738fd033375f88eba 100644 (file)
@@ -1,3 +1,9 @@
+2019-10-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+
+       PR tree-optimization/92085
+       * gcc.dg/tree-ssa/pr92085-1.c: New test.
+       * gcc.dg/tree-ssa/pr92085-2.c: Likewise.
+
 2019-10-14  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/89943
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr92085-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr92085-1.c
new file mode 100644 (file)
index 0000000..c18f820
--- /dev/null
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -fexceptions -fnon-call-exceptions -ftree-loop-vectorize -fno-tree-sink --param dse-max-alias-queries-per-store=2 -w" } */
+
+void
+di (int y9, int qw)
+{
+  if ((int) &y9 != 0)
+    {
+      int py;
+      int **fq = &py;
+
+      while (qw < 1)
+        {
+          if ((0 < (**fq ? **fq : (**fq = 1))) / (**fq = y9))
+            ;
+
+          ++qw;
+        }
+    }
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr92085-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr92085-2.c
new file mode 100644 (file)
index 0000000..f62585c
--- /dev/null
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -ftree-loop-vectorize -fno-tree-dce -fno-tree-sink -w" } */
+
+int a8;
+
+void
+c1 (int oz, int dk, int ub)
+{
+  int *hd = 0;
+  long int *th = &dk;
+
+  while (ub < 1)
+    {
+      oz || dk;
+      ++ub;
+    }
+
+  while (oz < 2)
+    {
+      long int *lq = &oz;
+
+      (*hd < (*lq = *th)) < oz;
+
+      if (oz == 0)
+        *th = a8 = oz;
+
+      *lq = 0;
+    }
+}
index af49813b0d1fb275d56948ec5f3328a0910743e2..3c296ec300265b102d18fba23a293056828f3e75 100644 (file)
@@ -2973,10 +2973,11 @@ ifcvt_local_dce (class loop *loop)
          ao_ref write;
          ao_ref_init (&write, lhs);
 
-          if (dse_classify_store (&write, stmt, false, NULL, NULL, latch_vdef)
-              == DSE_STORE_DEAD)
-            delete_dead_or_redundant_assignment (&gsi, "dead");
-         gsi_next (&gsi);
+         if (dse_classify_store (&write, stmt, false, NULL, NULL, latch_vdef)
+             == DSE_STORE_DEAD)
+           delete_dead_or_redundant_assignment (&gsi, "dead");
+         else
+           gsi_next (&gsi);
          continue;
        }