diff mbox series

Fix PR89440

Message ID alpine.LSU.2.20.1902221150210.23386@zhemvz.fhfr.qr
State New
Headers show
Series Fix PR89440 | expand

Commit Message

Richard Biener Feb. 22, 2019, 10:51 a.m. UTC
The following removes an assert in the vectorizer since we can handle
this nested cycle just fine.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

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.
diff mbox series

Patch

Index: gcc/tree-vect-loop.c
===================================================================
--- gcc/tree-vect-loop.c	(revision 269096)
+++ gcc/tree-vect-loop.c	(working copy)
@@ -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
Index: gcc/testsuite/gcc.dg/vect/pr89440.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/pr89440.c	(nonexistent)
+++ gcc/testsuite/gcc.dg/vect/pr89440.c	(working copy)
@@ -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 } } } */