]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix clobber removal in parloops
authorTom de Vries <tom@codesourcery.com>
Sat, 23 Jan 2016 20:28:17 +0000 (20:28 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Sat, 23 Jan 2016 20:28:17 +0000 (20:28 +0000)
2016-01-23  Tom de Vries  <tom@codesourcery.com>

PR tree-optimization/69426
* tree-parloops.c (eliminate_local_variables_stmt): Handle vdef of
removed clobber.

* gcc.dg/autopar/pr69426.c: New test.

From-SVN: r232767

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/autopar/pr69426.c [new file with mode: 0644]
gcc/tree-parloops.c

index 14f990453c29a0cd6a1f0c4fc9734066d33c9bdc..d45c45f54267e22a1c97fbeb63b8cc29aed662ee 100644 (file)
@@ -1,3 +1,9 @@
+2016-01-23  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/69426
+       * tree-parloops.c (eliminate_local_variables_stmt): Handle vdef of
+       removed clobber.
+
 2016-01-23  Jakub Jelinek  <jakub@redhat.com>
 
        * tree-ssanames.c (release_free_names_and_compact_live_names): Replace
index 27d03891419339a035f7a66e6e3ffd82fc27e021..0967d44f79848417a81507409d5d06fd0f1b12a5 100644 (file)
@@ -1,3 +1,8 @@
+2016-01-23  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/69426
+       * gcc.dg/autopar/pr69426.c: New test.
+
 2016-01-23  Martin Sebor  <msebor@redhat.com>
 
        PR c++/58109
diff --git a/gcc/testsuite/gcc.dg/autopar/pr69426.c b/gcc/testsuite/gcc.dg/autopar/pr69426.c
new file mode 100644 (file)
index 0000000..e91421c
--- /dev/null
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2" } */
+
+int iq;
+
+void
+mr(void)
+{
+  unsigned int i8;
+
+  for (i8 = 0; i8 != 1; i8 += 3) {
+    void *f0[] = { f0 };
+    int hv;
+
+    for (; hv < 1; ++hv)
+      iq = 0;
+  }
+  ++iq;
+}
index 7749d34fab32accf248a49d921b3cf417a5521fa..52dfc254e62ab498bd415185ef2a7571eb42911d 100644 (file)
@@ -725,6 +725,7 @@ eliminate_local_variables_stmt (edge entry, gimple_stmt_iterator *gsi,
     }
   else if (gimple_clobber_p (stmt))
     {
+      unlink_stmt_vdef (stmt);
       stmt = gimple_build_nop ();
       gsi_replace (gsi, stmt, false);
       dta.changed = true;