From: Richard Sandiford Date: Fri, 12 Jan 2018 14:48:00 +0000 (+0000) Subject: Allow variable-sized temporary variables in gimplify.c X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=825010bb37db90c97c9409d3407c8538e3246577;p=gcc.git Allow variable-sized temporary variables in gimplify.c This is needed to build libgfortran for SVE. The OpenMP code needs to create temporary vector variables, and the variables will therefore be variable-sized for SVE. Earlier patches made such variables work. 2018-01-12 Richard Sandiford gcc/ * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size. (gimple_add_tmp_var): Likewise. From-SVN: r256585 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 70fff293740..823f39d1d87 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-01-12 Richard Sandiford + + * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a + poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size. + (gimple_add_tmp_var): Likewise. + 2018-01-12 Martin Liska * gimple.c (gimple_alloc_counts): Use uint64_t instead of int. diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 5ad3762059d..fd0d21ebe4d 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -702,7 +702,7 @@ gimple_add_tmp_var_fn (struct function *fn, tree tmp) /* Later processing assumes that the object size is constant, which might not be true at this point. Force the use of a constant upper bound in this case. */ - if (!tree_fits_uhwi_p (DECL_SIZE_UNIT (tmp))) + if (!tree_fits_poly_uint64_p (DECL_SIZE_UNIT (tmp))) force_constant_size (tmp); DECL_CONTEXT (tmp) = fn->decl; @@ -721,7 +721,7 @@ gimple_add_tmp_var (tree tmp) /* Later processing assumes that the object size is constant, which might not be true at this point. Force the use of a constant upper bound in this case. */ - if (!tree_fits_uhwi_p (DECL_SIZE_UNIT (tmp))) + if (!tree_fits_poly_uint64_p (DECL_SIZE_UNIT (tmp))) force_constant_size (tmp); DECL_CONTEXT (tmp) = current_function_decl;