https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124271
--- Comment #6 from Hongtao Liu <liuhongt at gcc dot gnu.org> --- > > > + unsigned int inner_prec = outer_prec / 2; > > + poly_uint64 outer_nelts = TYPE_VECTOR_SUBPARTS (type); > > + tree inner_scalar = build_nonstandard_integer_type (inner_prec, 1); > > I think 1 here should be `TYPE_UNSIGNED (TREE_TYPE (type))` otherwise you > get a type mismatch I think. vec_widen_mult_even_expr need to check the type of inner_scalar to generate vec_widen_umult_even optab, so I explicitly use unsigned type for inner_scalar. Or you mean add TYPE_UNIGNED (TREE_TYPE (type)) to the outer if (TYPE_UNIGNED (TREE_TYPE (type))...)?
