From da157e2ee9e12348df78246ee33b244b7cc334df Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Mon, 21 Oct 2019 06:40:36 +0000 Subject: [PATCH] Avoid setting current_vector_size in get_vec_alignment_for_array_type 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. 2019-10-21 Richard Sandiford 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. From-SVN: r277223 --- gcc/ChangeLog | 6 ++++++ gcc/tree-vectorizer.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a68d0fc6f00..4460d1e9e9d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-10-21 Richard Sandiford + + * tree-vectorizer.c (get_vec_alignment_for_array_type): Use + get_vectype_for_scalar_type_and_size instead of + get_vectype_for_scalar_type. + 2019-10-20 Bernd Edlinger * common.opt (-fcommon): Fix description. diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index 1a0cc93582b..0c0c018fd8e 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -1347,7 +1347,8 @@ get_vec_alignment_for_array_type (tree type) 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) -- 2.30.2