diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-08-30 07:47:54 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-08-30 07:47:54 +0000 |
commit | 1d4bc0bbe2d559f34369d930a2486389c91dbe02 (patch) | |
tree | 2bb2dc21225ff64d9bd30536685b130abb71793c /gcc | |
parent | a1e7a7babcac7905de08bbeec5d716d256b0fea3 (diff) | |
download | ppe42-gcc-1d4bc0bbe2d559f34369d930a2486389c91dbe02.tar.gz ppe42-gcc-1d4bc0bbe2d559f34369d930a2486389c91dbe02.zip |
2013-08-30 Richard Biener <rguenther@suse.de>
PR tree-optimization/58010
* tree-vect-loop.c (vect_create_epilog_for_reduction): Remove
assert that we have a loop-closed PHI.
* gcc.dg/pr58010.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@202095 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr58010.c | 15 | ||||
-rw-r--r-- | gcc/tree-vect-loop.c | 5 |
4 files changed, 28 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 83e36218d4a..3c46e54135e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-08-30 Richard Biener <rguenther@suse.de> + + PR tree-optimization/58010 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Remove + assert that we have a loop-closed PHI. + 2013-08-29 Jan Hubicka <jh@suse.cz> * lto-symtab.c (lto_cgraph_replace_node): Free decl_in_state. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a3afbcedd02..8d93f2ef993 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-08-30 Richard Biener <rguenther@suse.de> + + PR tree-optimization/58010 + * gcc.dg/pr58010.c: New testcase. + 2013-08-29 Xinliang DavidLi <davidxl@google.com> * gcc.dg/unroll_3.c: Message change. diff --git a/gcc/testsuite/gcc.dg/pr58010.c b/gcc/testsuite/gcc.dg/pr58010.c new file mode 100644 index 00000000000..a0fbd31f495 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr58010.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -funswitch-loops -ftree-vectorize" } */ + +short a, b, c, d; + +void f(void) +{ + short e; + + for(; e; e++) + for(; b; b++); + + for(d = 0; d < 4; d++) + a ^= (e ^= 1) || c ? : e; +} diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 3e1cbb19bfd..e8a4ac1643b 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -4373,9 +4373,8 @@ vect_finalize_reduction: if (!flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p)))) phis.safe_push (USE_STMT (use_p)); - /* We expect to have found an exit_phi because of loop-closed-ssa - form. */ - gcc_assert (!phis.is_empty ()); + /* While we expect to have found an exit_phi because of loop-closed-ssa + form we can end up without one if the scalar cycle is dead. */ FOR_EACH_VEC_ELT (phis, i, exit_phi) { |