This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[gfortran] Remove GFC_DECL_STRING
- From: Paul Brook <paul at codesourcery dot com>
- To: fortran at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Sat, 10 Apr 2004 23:41:34 +0100
- Subject: [gfortran] Remove GFC_DECL_STRING
- Organization: CodeSourcery
GFC_DECL_STRING should have been removed as part of my previous strings patch,
but somehow survived. The patch below rectifies this. This should fix the
tree type checking failures people were seeing.
Paul
2004-04-10 Paul Brook <paul@codesourcery.com>
* trans-array.c (gfc_trans_allocate_temp_array,
gfc_conv_tmp_array_ref): Don't use GFC_DECL_STRING.
* trans-decl.c (gfc_build_dummy_array_decl,
gfc_get_symbol_decl, gfc_build_function_decl,
gfc_create_module_variable): Ditto.
* trans-expr.c (gfc_conv_variable): Ditto.
* trans-intrinsic.c (gfc_conv_intrinsic_len): Ditto.
* trans.h (GFC_DECL_STRING): Remove.
(GFC_DECL_PACKED_ARRAY, GFC_DECL_PARTIAL_PACKED_ARRAY,
GFC_DECL_ASSIGN): Renumber flags.
Index: trans-array.c
===================================================================
RCS file: /var/cvsroot/gcc-cvs/gcc/gcc/fortran/Attic/trans-array.c,v
retrieving revision 1.1.2.19
diff -u -p -r1.1.2.19 trans-array.c
--- a/trans-array.c 4 Apr 2004 23:27:49 -0000 1.1.2.19
+++ b/trans-array.c 10 Apr 2004 18:24:40 -0000
@@ -529,8 +529,6 @@ gfc_trans_allocate_temp_array (gfc_loopi
gfc_get_array_type_bounds (eltype, info->dimen, loop->from, loop->to, 1);
desc = gfc_create_var (type, "atmp");
GFC_DECL_PACKED_ARRAY (desc) = 1;
- if (string_length)
- GFC_DECL_STRING (desc) = 1;
info->descriptor = desc;
size = integer_one_node;
@@ -1439,9 +1437,7 @@ gfc_conv_tmp_array_ref (gfc_se * se)
tree desc;
desc = se->ss->data.info.descriptor;
- /* TODO: We need the string length. */
- if (GFC_DECL_STRING (desc))
- gfc_todo_error ("temporary arrays of strings");
+ /* TODO: We need the string length for string variables. */
gfc_conv_scalarized_array_ref (se, NULL);
}
Index: trans-decl.c
===================================================================
RCS file: /var/cvsroot/gcc-cvs/gcc/gcc/fortran/Attic/trans-decl.c,v
retrieving revision 1.1.2.35
diff -u -p -r1.1.2.35 trans-decl.c
--- a/trans-decl.c 4 Apr 2004 23:27:49 -0000 1.1.2.35
+++ b/trans-decl.c 10 Apr 2004 18:26:09 -0000
@@ -645,7 +645,6 @@ gfc_build_dummy_array_decl (gfc_symbol *
gfc_allocate_lang_decl (decl);
GFC_DECL_SAVED_DESCRIPTOR (decl) = dummy;
- GFC_DECL_STRING (decl) = GFC_DECL_STRING (dummy);
if (sym->ns->proc_name->backend_decl == current_function_decl
|| sym->attr.contained)
@@ -808,9 +807,7 @@ gfc_get_symbol_decl (gfc_symbol * sym)
{
case BT_CHARACTER:
/* Character variables need special handling. */
-
gfc_allocate_lang_decl (decl);
- GFC_DECL_STRING (decl) = 1;
if (TREE_CODE (length) == INTEGER_CST)
{
@@ -1096,7 +1093,6 @@ gfc_build_function_decl (gfc_symbol * sy
if (sym->ts.type == BT_CHARACTER)
{
gfc_allocate_lang_decl (parm);
- GFC_DECL_STRING (parm) = 1;
/* Length of character result */
type = TREE_VALUE (typelist);
@@ -1174,7 +1170,6 @@ gfc_build_function_decl (gfc_symbol * sy
TREE_READONLY (length) = 1;
gfc_finish_decl (length, NULL_TREE);
- GFC_DECL_STRING (parm) = 1;
/* TODO: Check string lengths when -fbounds-check. */
/* Use the passed value for assumed length variables. */
@@ -1779,7 +1774,7 @@ gfc_create_module_variable (gfc_symbol *
rest_of_decl_compilation (decl, NULL, 1, 0);
/* Also add length of strings. */
- if (GFC_DECL_STRING (decl))
+ if (sym->ts.type == BT_CHARACTER)
{
tree length;
Index: trans-expr.c
===================================================================
RCS file: /var/cvsroot/gcc-cvs/gcc/gcc/fortran/Attic/trans-expr.c,v
retrieving revision 1.1.2.21
diff -u -p -r1.1.2.21 trans-expr.c
--- a/trans-expr.c 4 Apr 2004 23:27:49 -0000 1.1.2.21
+++ b/trans-expr.c 10 Apr 2004 19:34:16 -0000
@@ -286,7 +286,8 @@ gfc_conv_variable (gfc_se * se, gfc_expr
/* Dereference scalar dummy variables. */
if (sym->attr.dummy
- && !(GFC_DECL_STRING (se->expr) || sym->attr.dimension))
+ && sym->ts.type != BT_CHARACTER
+ && !sym->attr.dimension)
se->expr = gfc_build_indirect_ref (se->expr);
/* Dereference pointer variables. */
@@ -304,7 +305,6 @@ gfc_conv_variable (gfc_se * se, gfc_expr
/* For character variables, also get the length. */
if (sym->ts.type == BT_CHARACTER)
{
- assert (sym->attr.in_common || GFC_DECL_STRING (se->expr));
se->string_length = sym->ts.cl->backend_decl;
assert (se->string_length);
}
Index: trans-intrinsic.c
===================================================================
RCS file: /var/cvsroot/gcc-cvs/gcc/gcc/fortran/Attic/trans-intrinsic.c,v
retrieving revision 1.1.2.27
diff -u -p -r1.1.2.27 trans-intrinsic.c
--- a/trans-intrinsic.c 4 Apr 2004 23:27:49 -0000 1.1.2.27
+++ b/trans-intrinsic.c 10 Apr 2004 19:35:27 -0000
@@ -1877,7 +1877,6 @@ gfc_conv_intrinsic_len (gfc_se * se, gfc
&& (sym->result == sym))
decl = gfc_get_fake_result_decl (sym);
- assert (GFC_DECL_STRING (decl));
len = sym->ts.cl->backend_decl;
assert (len);
}
Index: trans.h
===================================================================
RCS file: /var/cvsroot/gcc-cvs/gcc/gcc/fortran/Attic/trans.h,v
retrieving revision 1.1.2.15
diff -u -p -r1.1.2.15 trans.h
--- a/trans.h 4 Apr 2004 23:27:50 -0000 1.1.2.15
+++ b/trans.h 10 Apr 2004 19:38:09 -0000
@@ -498,10 +498,9 @@ struct lang_decl GTY(())
#define GFC_DECL_STRING_LEN(node) DECL_LANG_SPECIFIC(node)->stringlen
#define GFC_DECL_SAVED_DESCRIPTOR(node) \
(DECL_LANG_SPECIFIC(node)->saved_descriptor)
-#define GFC_DECL_STRING(node) DECL_LANG_FLAG_0(node)
-#define GFC_DECL_PACKED_ARRAY(node) DECL_LANG_FLAG_1(node)
-#define GFC_DECL_PARTIAL_PACKED_ARRAY(node) DECL_LANG_FLAG_2(node)
-#define GFC_DECL_ASSIGN(node) DECL_LANG_FLAG_3(node)
+#define GFC_DECL_PACKED_ARRAY(node) DECL_LANG_FLAG_0(node)
+#define GFC_DECL_PARTIAL_PACKED_ARRAY(node) DECL_LANG_FLAG_1(node)
+#define GFC_DECL_ASSIGN(node) DECL_LANG_FLAG_2(node)
/* An array descriptor. */
#define GFC_DESCRIPTOR_TYPE_P(node) TYPE_LANG_FLAG_1(node)