http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56695
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> 2013-03-27 09:57:41 UTC --- That said, it should look like, unconditionally(!) unsigned int prec = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (vectype))); tree cmp_type = build_nonstandard_integer_type (prec, TYPE_UNSIGNED (TREE_OPERAND (cond_expr, 0))); vec_cmp_type = get_same_sized_vectype (cmp_type, vectype); if (vec_cmp_type == NULL_TREE) return false; whether the result is integral or not doesn't matter. You can still have foo_signed = uns1 < uns2 ? bar_signed : bar2_signed;