]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Don't allow latch with phi in try_transform_to_exit_first_loop_alt
authorvries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Jan 2016 09:38:28 +0000 (09:38 +0000)
committervries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Jan 2016 09:38:28 +0000 (09:38 +0000)
2016-01-11  Tom de Vries  <tom@codesourcery.com>

PR tree-optimization/69109
* tree-parloops.c (try_transform_to_exit_first_loop_alt): Don't allow
latch with phi.

* gcc.dg/autopar/pr69109-2.c: New test.
* gcc.dg/autopar/pr69109.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232212 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 43623dcd9704c1f5b9b82c036c0e752306bb2951..c0c3cece95be2eb94e51a6b7e23fcba033e7db77 100644 (file)
@@ -1,3 +1,9 @@
+2016-01-11  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/69109
+       * tree-parloops.c (try_transform_to_exit_first_loop_alt): Don't allow
+       latch with phi.
+
 2016-01-11  Tom de Vries  <tom@codesourcery.com>
 
        PR tree-optimization/69108
index ec4cd37f0004a3772659c296942846723cb0a2c4..a160ed095174e405c4b225d6c85d9f5c64c05728 100644 (file)
@@ -1,3 +1,9 @@
+2016-01-11  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/69109
+       * gcc.dg/autopar/pr69109-2.c: New test.
+       * gcc.dg/autopar/pr69109.c: New test.
+
 2016-01-11  Tom de Vries  <tom@codesourcery.com>
 
        PR tree-optimization/69108
diff --git a/gcc/testsuite/gcc.dg/autopar/pr69109-2.c b/gcc/testsuite/gcc.dg/autopar/pr69109-2.c
new file mode 100644 (file)
index 0000000..0a3154b
--- /dev/null
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -funswitch-loops" } */
+
+#include "../../gcc.c-torture/compile/pr32399.c"
diff --git a/gcc/testsuite/gcc.dg/autopar/pr69109.c b/gcc/testsuite/gcc.dg/autopar/pr69109.c
new file mode 100644 (file)
index 0000000..58f3a9f
--- /dev/null
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -funswitch-loops" } */
+
+#include "../vect/unswitch-loops-pr26969.c"
index d68370430c263fb2f0a4ac1c87e6c5590c5e4b8a..5afaaf8af13a6a5730a7059987e713ce76d94465 100644 (file)
@@ -1769,6 +1769,10 @@ try_transform_to_exit_first_loop_alt (struct loop *loop,
   if (!gimple_seq_nondebug_singleton_p (bb_seq (loop->latch)))
     return false;
 
+  /* Check whether the latch contains no phis.  */
+  if (phi_nodes (loop->latch) != NULL)
+    return false;
+
   /* Check whether the latch contains the loop iv increment.  */
   edge back = single_succ_edge (loop->latch);
   edge exit = single_dom_exit (loop);