https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68327

--- Comment #3 from Ilya Enkovich <ienkovich at gcc dot gnu.org> ---
We compute vectype for phi when it's relevant.  For other statements we compute
it when it's relevant or alive.  For non-relevant but alive boolean statement
we try to examine operand definition which is non-relevant phi and doesn't have
vectype.

Do we need vectype for non-relevant statements?  This patch works for the test:

diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 80937ec..592372d 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -439,7 +439,8 @@ vect_determine_vectorization_factor (loop_vec_info
loop_vinfo)
                 compute a factor.  */
              if (TREE_CODE (scalar_type) == BOOLEAN_TYPE)
                {
-                 mask_producers.safe_push (stmt_info);
+                 if (STMT_VINFO_RELEVANT_P (stmt_info))
+                   mask_producers.safe_push (stmt_info);
                  bool_result = true;

                  if (gimple_code (stmt) == GIMPLE_ASSIGN

Reply via email to