aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-02-22 10:52:49 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-02-22 10:52:49 +0000
commit9f0ffb2bdfa04a617ca81e55ab686a80d6ad6c77 (patch)
treeecda77ddb54b48c673b8b661ed1240fc11eb4f00 /gcc
parentaceb106743f81c9df9499c470134c5a3f1370361 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr89440.c32
-rw-r--r--gcc/tree-vect-loop.c7
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