From 9af7f3731b0ddffb3aa75b78a0ede411d36a3b09 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 21 Jul 2017 11:32:01 +0000 Subject: [PATCH] re PR tree-optimization/81500 (ICE with -O3 in process_use, at tree-vect-stmts.c:506) 2017-06-21 Richard Biener PR tree-optimization/81500 * tree-vect-loop.c (vect_is_simple_reduction): Properly fail if we didn't identify a reduction path. * gcc.dg/torture/pr81500.c: New testcase. From-SVN: r250423 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/torture/pr81500.c | 13 +++++++++++++ gcc/tree-vect-loop.c | 6 ++---- 4 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr81500.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a2bc6e7a6c4..59d59b815e0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-06-21 Richard Biener + + PR tree-optimization/81500 + * tree-vect-loop.c (vect_is_simple_reduction): Properly fail if + we didn't identify a reduction path. + 2017-07-21 Tom de Vries Cesar Philippidis diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 482b8dd2c9a..148bb429f71 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-06-21 Richard Biener + + PR tree-optimization/81500 + * gcc.dg/torture/pr81500.c: New testcase. + 2017-07-20 Nathan Sidwell * g++.dg/ext/anon-struct6.C: Adjust diag. diff --git a/gcc/testsuite/gcc.dg/torture/pr81500.c b/gcc/testsuite/gcc.dg/torture/pr81500.c new file mode 100644 index 00000000000..7aaec2189fc --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr81500.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ + +typedef int a; +void c(int *b) +{ + int d; + a e, f, *g, *h = b; + for (; d; d--) { + f = *g & 1; + *h-- = *g-- | e; + e = f; + } +} diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 64d86995c84..931f1b5872e 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -3243,7 +3243,7 @@ pop: } /* Check whether the reduction path detected is valid. */ - bool fail = false; + bool fail = path.length () == 0; bool neg = false; for (unsigned i = 1; i < path.length (); ++i) { @@ -3276,9 +3276,7 @@ pop: if (dump_enabled_p ()) { - report_vect_op (MSG_MISSED_OPTIMIZATION, - SSA_NAME_DEF_STMT - (USE_FROM_PTR (path[path.length ()-1].second)), + report_vect_op (MSG_MISSED_OPTIMIZATION, def_stmt, "reduction: unknown pattern: "); } -- 2.30.2