On Sun, Oct 20, 2019 at 3:23 PM Richard Sandiford
<richard.sandif...@arm.com> wrote:
>
> The increase_alignment pass was using get_vectype_for_scalar_type
> to get the preferred vector type for each array element type.
> This has the effect of carrying over the vector size chosen by
> the first successful call to all subsequent calls, whereas it seems
> more natural to treat each array type independently and pick the
> "best" vector type for each element type.

OK.

>
> 2019-10-20  Richard Sandiford  <richard.sandif...@arm.com>
>
> gcc/
>         * tree-vectorizer.c (get_vec_alignment_for_array_type): Use
>         get_vectype_for_scalar_type_and_size instead of
>         get_vectype_for_scalar_type.
>
> Index: gcc/tree-vectorizer.c
> ===================================================================
> --- gcc/tree-vectorizer.c       2019-10-20 13:58:02.091634417 +0100
> +++ gcc/tree-vectorizer.c       2019-10-20 14:13:50.784857051 +0100
> @@ -1347,7 +1347,8 @@ get_vec_alignment_for_array_type (tree t
>    gcc_assert (TREE_CODE (type) == ARRAY_TYPE);
>    poly_uint64 array_size, vector_size;
>
> -  tree vectype = get_vectype_for_scalar_type (strip_array_types (type));
> +  tree scalar_type = strip_array_types (type);
> +  tree vectype = get_vectype_for_scalar_type_and_size (scalar_type, 0);
>    if (!vectype
>        || !poly_int_tree_p (TYPE_SIZE (type), &array_size)
>        || !poly_int_tree_p (TYPE_SIZE (vectype), &vector_size)

Reply via email to