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]

[Patch, Fortran, committed] Print not-implemented error for deferred-length character components


Dear all,

while deferred-length character variables work in principle (though there are issues), deferred-length components have not been implemented at all. Currently, one gets an ICE if one tries to use them.

Dominique proposed to print an error (sorry not yet implemented), which makes sense as we have at least 5 PRs about this issue.

Committed as Rev 182372 to the trunk and as Rev.182373 to the 4.6 branch.

Tobias
Index: gcc/fortran/ChangeLog
===================================================================
--- gcc/fortran/ChangeLog	(revision 182371)
+++ gcc/fortran/ChangeLog	(working copy)
@@ -1,5 +1,14 @@
 2011-12-15  Tobias Burnus  <burnus@net-b.de>
 
+	PR fortran/51550
+	PR fortran/47545
+	PR fortran/49050
+	PR fortran/51075	
+	* resolve.c (resolve_fl_derived0): Print not-implemented error
+	for deferred-length character components.
+
+2011-12-15  Tobias Burnus  <burnus@net-b.de>
+
 	* primary.c (gfc_match_varspec): Match array spec for
 	polymorphic coarrays.
 	(gfc_match_rvalue): If a symbol of unknown flavor has a
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c	(revision 182371)
+++ gcc/fortran/resolve.c	(working copy)
@@ -11432,6 +11432,14 @@ resolve_fl_derived0 (gfc_symbol *sym)
 
   for (c = sym->components; c != NULL; c = c->next)
     {
+      /* See PRs 51550, 47545, 48654, 49050, 51075 - and 45170.  */
+      if (c->ts.type == BT_CHARACTER && c->ts.deferred)
+	{
+	  gfc_error ("Deferred-length character component '%s' at %L is not "
+		     "yet supported", c->name, &c->loc);
+	  return FAILURE;
+	}
+
       /* F2008, C442.  */
       if ((!sym->attr.is_class || c != sym->components)
 	  && c->attr.codimension

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