diff options
author | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-01-11 09:38:28 +0000 |
---|---|---|
committer | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-01-11 09:38:28 +0000 |
commit | 9eb890f1d65b704eafa89f9d0ccd8acfb87a1edd (patch) | |
tree | b22a7438f476e5f3f48613ffa0779ecb9f46444b | |
parent | c4157ee5376afc71e1ab06ab719a524a518a6c14 (diff) | |
download | gcc-9eb890f1d65b704eafa89f9d0ccd8acfb87a1edd.tar.gz |
Don't allow latch with phi in try_transform_to_exit_first_loop_alt
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/autopar/pr69109-2.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/autopar/pr69109.c | 4 | ||||
-rw-r--r-- | gcc/tree-parloops.c | 4 |
5 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 43623dcd970..c0c3cece95b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 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 * tree-parloops.c (gather_scalar_reductions): Handle case that outer phi res is not used in a phi. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ec4cd37f000..a160ed09517 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,11 @@ 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 * gcc.dg/autopar/pr69108.c: New test. diff --git a/gcc/testsuite/gcc.dg/autopar/pr69109-2.c b/gcc/testsuite/gcc.dg/autopar/pr69109-2.c new file mode 100644 index 00000000000..0a3154ba4f5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/autopar/pr69109-2.c @@ -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 index 00000000000..58f3a9fafe3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/autopar/pr69109.c @@ -0,0 +1,4 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-parallelize-loops=2 -funswitch-loops" } */ + +#include "../vect/unswitch-loops-pr26969.c" diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index d68370430c2..5afaaf8af13 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.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); |