diff options
author | Richard Biener <rguenther@suse.de> | 2013-08-30 07:47:54 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-08-30 07:47:54 +0000 |
commit | 7a764c608a4f0cb9eb7b6430a0ccf1aa36bbd53e (patch) | |
tree | 2bb2dc21225ff64d9bd30536685b130abb71793c | |
parent | 82e9d6426cfbfd4765d2d10b1a4c097a83ca264f (diff) | |
download | gcc-7a764c608a4f0cb9eb7b6430a0ccf1aa36bbd53e.zip gcc-7a764c608a4f0cb9eb7b6430a0ccf1aa36bbd53e.tar.gz gcc-7a764c608a4f0cb9eb7b6430a0ccf1aa36bbd53e.tar.bz2 |
re PR tree-optimization/58010 (ICE in vect_create_epilog_for_reduction, at tree-vect-loop.c:4378)
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.
From-SVN: r202095
-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 83e3621..3c46e54 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 a3afbce..8d93f2e 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 0000000..a0fbd31 --- /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 3e1cbb1..e8a4ac1 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) { |