From 7a764c608a4f0cb9eb7b6430a0ccf1aa36bbd53e Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 30 Aug 2013 07:47:54 +0000 Subject: [PATCH] re PR tree-optimization/58010 (ICE in vect_create_epilog_for_reduction, at tree-vect-loop.c:4378) 2013-08-30 Richard Biener 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 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr58010.c | 15 +++++++++++++++ gcc/tree-vect-loop.c | 5 ++--- 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr58010.c 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 + + 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 * 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 + + PR tree-optimization/58010 + * gcc.dg/pr58010.c: New testcase. + 2013-08-29 Xinliang DavidLi * 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) { -- 2.30.2