Commit cf736b09 by Richard Sandiford Committed by Richard Sandiford

Handle poly_int vector sizes in get_vec_alignment_for_array_type

get_vectype_for_scalar_type returns a variable-length vector type
for SVE, whereas get_vec_alignment_for_array_type assumed it would
always be an INTEGER_CST.

This is needed to build libstdc++-v3/src/closures.cc for SVE
(and probably many other places besides -- this was just the
first hit).

2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
	polynomial type sizes.

From-SVN: r256586
parent 825010bb
2018-01-12 Richard Sandiford <richard.sandiford@linaro.org> 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
* tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
polynomial type sizes.
2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
* gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size. poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
(gimple_add_tmp_var): Likewise. (gimple_add_tmp_var): Likewise.
......
...@@ -1015,12 +1015,13 @@ static unsigned ...@@ -1015,12 +1015,13 @@ static unsigned
get_vec_alignment_for_array_type (tree type) get_vec_alignment_for_array_type (tree type)
{ {
gcc_assert (TREE_CODE (type) == ARRAY_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 vectype = get_vectype_for_scalar_type (strip_array_types (type));
if (!vectype if (!vectype
|| !TYPE_SIZE (type) || !poly_int_tree_p (TYPE_SIZE (type), &array_size)
|| TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST || !poly_int_tree_p (TYPE_SIZE (vectype), &vector_size)
|| tree_int_cst_lt (TYPE_SIZE (type), TYPE_SIZE (vectype))) || maybe_lt (array_size, vector_size))
return 0; return 0;
return TYPE_ALIGN (vectype); return TYPE_ALIGN (vectype);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment