This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gfortran] Remove GFC_DECL_STRING


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)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]