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