re PR tree-optimization/82157 (ICE on valid code at -O2 and -O3: cannot update SSA...
authorRichard Biener <rguenther@suse.de>
Tue, 12 Sep 2017 14:15:37 +0000 (14:15 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 12 Sep 2017 14:15:37 +0000 (14:15 +0000)
2017-09-12  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82157
* tree-ssa-pre.c (remove_dead_inserted_code): Do not remove
stmts with side-effects.

* gcc.dg/torture/pr82157.c: New testcase.

From-SVN: r252020

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr82157.c [new file with mode: 0644]
gcc/tree-ssa-pre.c

index 7bc95e86c949a3713f7d52c920468b286ed480b7..62e8fae4128bd405135a0437caac5ec05a512190 100644 (file)
@@ -1,3 +1,9 @@
+2017-09-12  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/82157
+       * tree-ssa-pre.c (remove_dead_inserted_code): Do not remove
+       stmts with side-effects.
+
 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
            Alan Hayward  <alan.hayward@arm.com>
            David Sherwood <david.sherwood@arm.com>
index 5d81c587e9cae4e9e2ccd426eaab47122587a338..57226399b77d2e6c95b162ae4f15cda4d23555a0 100644 (file)
@@ -1,3 +1,8 @@
+2017-09-12  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/82157
+       * gcc.dg/torture/pr82157.c: New testcase.
+
 2017-09-12  Simon Atanasyan  <simon.atanasyan@imgtec.com>
 
        * gcc.target/mips/near-far-1.c: Add check for 'short_call'
diff --git a/gcc/testsuite/gcc.dg/torture/pr82157.c b/gcc/testsuite/gcc.dg/torture/pr82157.c
new file mode 100644 (file)
index 0000000..036b484
--- /dev/null
@@ -0,0 +1,43 @@
+/* { dg-do compile } */
+
+int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
+
+int aa ()
+{ 
+  w = f < 0 || e >> f;
+  while (z)
+    h = i && (r && p) | ((l = p) == c % d);
+  k = v + 1 < a;
+  t = -(j < 1) * q;
+  return u;
+}
+
+int ab ()
+{ 
+  for (j = 0; 1; j = 5)
+    if (!s)
+      return d;
+}
+
+void ac ()
+{ 
+  char ad = aa ();
+  ab ();
+  if (x)
+    { 
+      for (m = 0; m < 3; m = a)
+       { 
+         y = a && b;
+         if (g)
+           break;
+       }
+      n = j;
+    }
+  o = j & ad;
+}
+
+int main ()
+{ 
+  ac ();
+  return 0;
+}
index 6f9fac5b9a0ea5731a2c3c0d99363fad4b67790a..364272ddf0ea81985cbdc5d9178f433fc46068a4 100644 (file)
@@ -4913,6 +4913,8 @@ remove_dead_inserted_code (void)
        continue;
 
       gimple *t = SSA_NAME_DEF_STMT (def);
+      if (gimple_has_side_effects (t))
+       continue;
 
       /* Add uses to the worklist.  */
       ssa_op_iter iter;