Don't allow latch with phi in try_transform_to_exit_first_loop_alt
2016-01-07 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.
---
gcc/testsuite/gcc.dg/autopar/pr69109-2.c | 4 ++++
gcc/testsuite/gcc.dg/autopar/pr69109.c | 4 ++++
gcc/tree-parloops.c | 4 ++++
3 files changed, 12 insertions(+)
new file mode 100644
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -funswitch-loops" } */
+
+#include "../../gcc.c-torture/compile/pr32399.c"
new file mode 100644
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -funswitch-loops" } */
+
+#include "../vect/unswitch-loops-pr26969.c"
@@ -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);