diff mbox series

[committed] PR82228: Move ncopies calculation in vectorizable_live_operation

Message ID 87k20ynzs3.fsf@linaro.org
State New
Headers show
Series [committed] PR82228: Move ncopies calculation in vectorizable_live_operation | expand

Commit Message

Richard Sandiford Sept. 16, 2017, 8:39 p.m. UTC
...which should have been after the early exit for non-vectorised
statements.  (Actually it could be after the !vec_stmt test in current
sources, but one of the later SVE patches needs it to be before, and
that's also the standard position in other vectorizable_* routines.)

Tested on x86_64-linux-gnu and applied as obvious.

It might be difficult to construct a reliable C or Fortran test for this,
since it only triggers if we miss a sinking opportunity.  A gimple FE
test might work though.  I'll try that when I have more time, but I
didn't want to hold the patch up until then.

Thanks,
Richard


2017-09-16  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	PR tree-optimization/82228
	* tree-vect-loop.c (vectorizable_live_operation): Move initialization
	of ncopies.
diff mbox series

Patch

Index: gcc/tree-vect-loop.c
===================================================================
--- gcc/tree-vect-loop.c	2017-09-15 13:03:19.144141117 +0100
+++ gcc/tree-vect-loop.c	2017-09-16 21:30:38.351984079 +0100
@@ -7029,11 +7029,6 @@  vectorizable_live_operation (gimple *stm
 
   gcc_assert (STMT_VINFO_LIVE_P (stmt_info));
 
-  if (slp_node)
-    ncopies = 1;
-  else
-    ncopies = vect_get_num_copies (loop_vinfo, vectype);
-
   if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_reduction_def)
     return false;
 
@@ -7054,6 +7049,11 @@  vectorizable_live_operation (gimple *stm
       return true;
     }
 
+  if (slp_node)
+    ncopies = 1;
+  else
+    ncopies = vect_get_num_copies (loop_vinfo, vectype);
+
   if (!vec_stmt)
     /* No transformation required.  */
     return true;