https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97521
--- Comment #20 from Richard Biener <rguenth at gcc dot gnu.org> --- So at least the tree.c use of get_mask_mode only passes it MODE_VECTOR so we don't have to second-guess the component size when passed a MODE_INT used as representation for an integer vector type. So I'm testing the following tree build_truth_vector_type_for_mode (poly_uint64 nunits, machine_mode mask_mode) { gcc_assert (mask_mode != BLKmode); unsigned HOST_WIDE_INT esize; if (VECTOR_MODE_P (mask_mode)) { poly_uint64 vsize = GET_MODE_BITSIZE (mask_mode); esize = vector_element_size (vsize, nunits); } else esize = 1; tree bool_type = build_nonstandard_boolean_type (esize); return make_vector_type (bool_type, nunits, mask_mode); }