https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114070
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu.org Target| |sparc Target Milestone|--- |12.4 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- /* For vector typed comparisons emit code to generate the desired all-ones or all-zeros mask. */ if (VECTOR_TYPE_P (ops->type)) { tree ifexp = build2 (ops->code, ops->type, arg0, arg1); if (VECTOR_BOOLEAN_TYPE_P (ops->type) && expand_vec_cmp_expr_p (TREE_TYPE (arg0), ops->type, ops->code)) return expand_vec_cmp_expr (ops->type, ifexp, target); else gcc_unreachable (); that means we end up with a non-boolean vector "flag". Possibly a middle-end issue indeed.