Message ID | mptk18zlff7.fsf@arm.com |
---|---|
State | New |
Headers | show |
Series | Turn current_vector_size into a vec_info field | expand |
On Sun, Oct 20, 2019 at 3:23 PM Richard Sandiford <richard.sandiford@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.sandiford@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)
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)