https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92772
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- And the issue is to be fixed in vect_create_epilog_for_reduction where we create the index IV: /* For cond reductions we want to create a new vector (INDEX_COND_EXPR) which is updated with the current index of the loop for every match of the original loop's cond_expr (VEC_STMT). This results in a vector containing the last time the condition passed for that vector lane. The first match will be a 1 to allow 0 to be used for non-matching indexes. If there are no matches at all then the vector will be all zeroes. */ if (STMT_VINFO_REDUC_TYPE (reduc_info) == COND_REDUCTION) { and the masking support needs to be added similarly to how vectorizable_condition handles it.