diff options
author | Richard Biener <rguenther@suse.de> | 2019-02-22 10:52:49 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-02-22 10:52:49 +0000 |
commit | 9f0ffb2bdfa04a617ca81e55ab686a80d6ad6c77 (patch) | |
tree | ecda77ddb54b48c673b8b661ed1240fc11eb4f00 /gcc | |
parent | aceb106743f81c9df9499c470134c5a3f1370361 (diff) | |
download | gcc-9f0ffb2bdfa04a617ca81e55ab686a80d6ad6c77.zip gcc-9f0ffb2bdfa04a617ca81e55ab686a80d6ad6c77.tar.gz gcc-9f0ffb2bdfa04a617ca81e55ab686a80d6ad6c77.tar.bz2 |
re PR tree-optimization/89440 (ICE in vect_create_epilog_for_reduction, at tree-vect-loop.c:5502)
2019-02-22 Richard Biener <rguenther@suse.de>
PR tree-optimization/89440
* tree-vect-loop.c (vect_create_epilog_for_reduction): Remove
not necessary assert.
* gcc.dg/vect/pr89440.c: New testcase.
From-SVN: r269111
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/pr89440.c | 32 | ||||
-rw-r--r-- | gcc/tree-vect-loop.c | 7 |
4 files changed, 43 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f14cbbce..b2b413c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-02-22 Richard Biener <rguenther@suse.de> + + PR tree-optimization/89440 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Remove + not necessary assert. + 2019-02-22 Thomas Schwinge <thomas@codesourcery.com> PR fortran/72741 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 709e1b1..1dd1d4b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-02-22 Richard Biener <rguenther@suse.de> + + PR tree-optimization/89440 + * gcc.dg/vect/pr89440.c: New testcase. + 2019-02-22 Thomas Schwinge <thomas@codesourcery.com> * lib/target-supports.exp (check_effective_target_offload_nvptx): diff --git a/gcc/testsuite/gcc.dg/vect/pr89440.c b/gcc/testsuite/gcc.dg/vect/pr89440.c new file mode 100644 index 0000000..668f48e --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr89440.c @@ -0,0 +1,32 @@ +/* { dg-do run } */ +/* { dg-additional-options "-ffast-math" } */ + +#include "tree-vect.h" + +float __attribute__((noinline,noclone)) +f (float x) +{ + int i; + float j; + float a = 0; + for (i = 0; i < 4; ++i) + { + for (j = 0; j < 4; ++j) + { + a += 1; + x += a; + } + } + return x; +} + +int +main() +{ + check_vect (); + if (f (1.0f) != 137.0f) + abort (); + return 0; +} + +/* { dg-final { scan-tree-dump "OUTER LOOP VECTORIZED" "vect" { target vect_float } } } */ diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index d63d382..e088b6f 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -5494,13 +5494,6 @@ vect_finalize_reduction: = loop_vinfo->lookup_stmt (exit_phi); gphi *vect_phi; - /* FORNOW. Currently not supporting the case that an inner-loop - reduction is not used in the outer-loop (but only outside the - outer-loop), unless it is double reduction. */ - gcc_assert ((STMT_VINFO_RELEVANT_P (exit_phi_vinfo) - && !STMT_VINFO_LIVE_P (exit_phi_vinfo)) - || double_reduc); - if (double_reduc) STMT_VINFO_VEC_STMT (exit_phi_vinfo) = inner_phi; else |