[gcc(refs/users/mikael/heads/refactor_descriptor_v08)] Déplacement gfc_grow_array
Mikael Morin
mikael@gcc.gnu.org
Wed Sep 17 13:02:57 GMT 2025
https://gcc.gnu.org/g:66251d041e8186d71d518722cbe2cc5058687c3a
commit 66251d041e8186d71d518722cbe2cc5058687c3a
Author: Mikael Morin <mikael@gcc.gnu.org>
Date: Thu Jul 31 14:41:23 2025 +0200
Déplacement gfc_grow_array
Diff:
---
gcc/fortran/trans-array.cc | 37 -------------------------------------
gcc/fortran/trans-descriptor.cc | 39 +++++++++++++++++++++++++++++++++++++++
gcc/fortran/trans-descriptor.h | 1 +
3 files changed, 40 insertions(+), 37 deletions(-)
diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 06e6418591d5..ea2723064cd4 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -1309,43 +1309,6 @@ gfc_get_iteration_count (tree start, tree end, tree step)
}
-/* Extend the data in array DESC by EXTRA elements. */
-
-static void
-gfc_grow_array (stmtblock_t * pblock, tree desc, tree extra)
-{
- tree arg0, arg1;
- tree tmp;
- tree size;
- tree ubound;
-
- if (integer_zerop (extra))
- return;
-
- ubound = gfc_conv_descriptor_ubound_get (desc, gfc_rank_cst[0]);
-
- /* Add EXTRA to the upper bound. */
- tmp = fold_build2_loc (input_location, PLUS_EXPR, gfc_array_index_type,
- ubound, extra);
- gfc_conv_descriptor_ubound_set (pblock, desc, gfc_rank_cst[0], tmp);
-
- /* Get the value of the current data pointer. */
- arg0 = gfc_conv_descriptor_data_get (desc);
-
- /* Calculate the new array size. */
- size = TYPE_SIZE_UNIT (gfc_get_element_type (TREE_TYPE (desc)));
- tmp = fold_build2_loc (input_location, PLUS_EXPR, gfc_array_index_type,
- ubound, gfc_index_one_node);
- arg1 = fold_build2_loc (input_location, MULT_EXPR, size_type_node,
- fold_convert (size_type_node, tmp),
- fold_convert (size_type_node, size));
-
- /* Call the realloc() function. */
- tmp = gfc_call_realloc (pblock, arg0, arg1);
- gfc_conv_descriptor_data_set (pblock, desc, tmp);
-}
-
-
/* Return true if the bounds of iterator I can only be determined
at run time. */
diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index a885ad4d77aa..5ab51ad326f2 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -2468,3 +2468,42 @@ gfc_set_pdt_array_descriptor (stmtblock_t *block, tree descr,
return size;
}
+
+
+/* Extend the data in array DESC by EXTRA elements. */
+
+void
+gfc_grow_array (stmtblock_t * pblock, tree desc, tree extra)
+{
+ tree arg0, arg1;
+ tree tmp;
+ tree size;
+ tree ubound;
+
+ if (integer_zerop (extra))
+ return;
+
+ ubound = gfc_conv_descriptor_ubound_get (desc, gfc_rank_cst[0]);
+
+ /* Add EXTRA to the upper bound. */
+ tmp = fold_build2_loc (input_location, PLUS_EXPR, gfc_array_index_type,
+ ubound, extra);
+ gfc_conv_descriptor_ubound_set (pblock, desc, gfc_rank_cst[0], tmp);
+
+ /* Get the value of the current data pointer. */
+ arg0 = gfc_conv_descriptor_data_get (desc);
+
+ /* Calculate the new array size. */
+ size = TYPE_SIZE_UNIT (gfc_get_element_type (TREE_TYPE (desc)));
+ tmp = fold_build2_loc (input_location, PLUS_EXPR, gfc_array_index_type,
+ ubound, gfc_index_one_node);
+ arg1 = fold_build2_loc (input_location, MULT_EXPR, size_type_node,
+ fold_convert (size_type_node, tmp),
+ fold_convert (size_type_node, size));
+
+ /* Call the realloc() function. */
+ tmp = gfc_call_realloc (pblock, arg0, arg1);
+ gfc_conv_descriptor_data_set (pblock, desc, tmp);
+}
+
+
diff --git a/gcc/fortran/trans-descriptor.h b/gcc/fortran/trans-descriptor.h
index 33ed46d1c47a..f383cd97c262 100644
--- a/gcc/fortran/trans-descriptor.h
+++ b/gcc/fortran/trans-descriptor.h
@@ -147,5 +147,6 @@ void gfc_set_descriptor_for_assign_realloc (stmtblock_t *, gfc_loopinfo *,
tree, tree, bool);
tree gfc_set_pdt_array_descriptor (stmtblock_t *, tree, gfc_array_spec *,
gfc_actual_arglist *, tree);
+void gfc_grow_array (stmtblock_t *, tree, tree);
#endif /* GFC_TRANS_DESCRIPTOR_H */
More information about the Gcc-cvs
mailing list