From: Mikael Morin <[email protected]>
Regression tested on powerpc64le-unknown-linux-gnu. OK for master?
-- >8 --
Move null descriptor factory function to trans-descriptor.cc.
gcc/fortran/ChangeLog:
* trans-array.cc (DATA_FIELD, OFFSET_FIELD, DTYPE_FIELD, SPAN_FIELD,
DIMENSION_FIELD, CAF_TOKEN_FIELD, STRIDE_SUBFIELD, LBOUND_SUBFIELD,
UBOUND_SUBFIELD): Remove preprocessor constants.
(gfc_build_null_descriptor): Move function to ...
* trans-descriptor.cc (gfc_build_null_descriptor): ... this file.
* trans-array.h (gfc_build_null_descriptor): Move declaration to ...
* trans-descriptor.h (gfc_build_null_descriptor): ... this file.
---
gcc/fortran/trans-array.cc | 45 ---------------------------------
gcc/fortran/trans-array.h | 2 --
gcc/fortran/trans-descriptor.cc | 24 ++++++++++++++++++
gcc/fortran/trans-descriptor.h | 3 +++
4 files changed, 27 insertions(+), 47 deletions(-)
diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index d9d5759604e..ab419bbae0b 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -214,38 +214,6 @@ gfc_get_cfi_dim_sm (tree desc, tree idx)
#undef CFI_DIM_FIELD_SM
-#define DATA_FIELD 0
-#define OFFSET_FIELD 1
-#define DTYPE_FIELD 2
-#define SPAN_FIELD 3
-#define DIMENSION_FIELD 4
-#define CAF_TOKEN_FIELD 5
-
-#define STRIDE_SUBFIELD 0
-#define LBOUND_SUBFIELD 1
-#define UBOUND_SUBFIELD 2
-
-/* Build a null array descriptor constructor. */
-
-tree
-gfc_build_null_descriptor (tree type)
-{
- tree field;
- tree tmp;
-
- gcc_assert (GFC_DESCRIPTOR_TYPE_P (type));
- gcc_assert (DATA_FIELD == 0);
- field = TYPE_FIELDS (type);
-
- /* Set a NULL data pointer. */
- tmp = build_constructor_single (type, field, null_pointer_node);
- TREE_CONSTANT (tmp) = 1;
- /* All other fields are ignored. */
-
- return tmp;
-}
-
-
/* Modify a descriptor such that the lbound of a given dimension is the value
specified. This also updates ubound and offset accordingly. */
@@ -283,19 +251,6 @@ gfc_conv_shift_descriptor_lbound (stmtblock_t* block, tree
desc,
}
-/* Cleanup those #defines. */
-
-#undef DATA_FIELD
-#undef OFFSET_FIELD
-#undef DTYPE_FIELD
-#undef SPAN_FIELD
-#undef DIMENSION_FIELD
-#undef CAF_TOKEN_FIELD
-#undef STRIDE_SUBFIELD
-#undef LBOUND_SUBFIELD
-#undef UBOUND_SUBFIELD
-
-
/* Mark a SS chain as used. Flags specifies in which loops the SS is used.
flags & 1 = Main loop body.
flags & 2 = temp copy loop. */
diff --git a/gcc/fortran/trans-array.h b/gcc/fortran/trans-array.h
index 6125301820f..7eb21dbb32d 100644
--- a/gcc/fortran/trans-array.h
+++ b/gcc/fortran/trans-array.h
@@ -137,8 +137,6 @@ void gfc_conv_loop_setup (gfc_loopinfo *, locus *);
void gfc_set_delta (gfc_loopinfo *);
/* Resolve array assignment dependencies. */
void gfc_conv_resolve_dependencies (gfc_loopinfo *, gfc_ss *, gfc_ss *);
-/* Build a null array descriptor constructor. */
-tree gfc_build_null_descriptor (tree);
/* Get a single array element. */
void gfc_conv_array_ref (gfc_se *, gfc_array_ref *, gfc_expr *, locus *);
diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index 18603601663..75fb9206ae9 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -379,6 +379,30 @@ gfc_get_descriptor_offsets_for_info (const_tree desc_type,
tree *data_off,
}
+/* Array descriptor higher level routines.
+
******************************************************************************/
+
+/* Build a null array descriptor constructor. */
+
+tree
+gfc_build_null_descriptor (tree type)
+{
+ tree field;
+ tree tmp;
+
+ gcc_assert (GFC_DESCRIPTOR_TYPE_P (type));
+ gcc_assert (DATA_FIELD == 0);
+ field = TYPE_FIELDS (type);
+
+ /* Set a NULL data pointer. */
+ tmp = build_constructor_single (type, field, null_pointer_node);
+ TREE_CONSTANT (tmp) = 1;
+ /* All other fields are ignored. */
+
+ return tmp;
+}
+
+
/* Cleanup those #defines. */
#undef DATA_FIELD
diff --git a/gcc/fortran/trans-descriptor.h b/gcc/fortran/trans-descriptor.h
index db877ee402b..44c8f6f1215 100644
--- a/gcc/fortran/trans-descriptor.h
+++ b/gcc/fortran/trans-descriptor.h
@@ -51,4 +51,7 @@ void gfc_get_descriptor_offsets_for_info (const_tree, tree *,
tree *, tree *,
tree *, tree *, tree *, tree *,
tree *);
+/* Build a null array descriptor constructor. */
+tree gfc_build_null_descriptor (tree type);
+
#endif /* GFC_TRANS_DESCRIPTOR_H */
--
2.51.0