Allow variable-sized temporary variables in gimplify.c
authorRichard Sandiford <richard.sandiford@linaro.org>
Fri, 12 Jan 2018 14:48:00 +0000 (14:48 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Fri, 12 Jan 2018 14:48:00 +0000 (14:48 +0000)
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  <richard.sandiford@linaro.org>

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

gcc/ChangeLog
gcc/gimplify.c

index 70fff2937404ffac7849af2b55651bf8e40354a1..823f39d1d877b5c0422b8244bb362309fbbd6a98 100644 (file)
@@ -1,3 +1,9 @@
+2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * 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  <mliska@suse.cz>
 
        * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
index 5ad3762059d35f8a47288ee08e24b26723c76138..fd0d21ebe4d422a613f396e394c5219bcde8289f 100644 (file)
@@ -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;