https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123321

--- Comment #21 from anlauf at gcc dot gnu.org ---
(In reply to Steve Kargl from comment #18)
> Created attachment 63193 [details]
> Patch and new testcase
> 
> The attached patch and testcase pass regression testing on FreeBSD.
> I'll note that bootstrap is currently broken on FreeBSD, so the 
> patch was developed against circa 12-10-26 sources.  I believe this
> fixed Van's issue.

diff --git a/gcc/fortran/trans-io.cc b/gcc/fortran/trans-io.cc
index 9360bddb30a..d403cd159ce 100644
--- a/gcc/fortran/trans-io.cc
+++ b/gcc/fortran/trans-io.cc
@@ -1698,8 +1698,9 @@ transfer_namelist_element (stmtblock_t * block, const
char * var_name,
   gcc_assert (sym || c);

   /* Build the namelist object name.  */
-  if (sym && !sym->attr.use_only && sym->attr.use_rename
-      && sym->ns->use_stmts->rename)
+  if (sym && sym->attr.use_rename && sym->ns->use_stmts->rename
+      && strlen(sym->ns->use_stmts->rename->local_name) > 0
+      && strcmp(sym->ns->use_stmts->rename->use_name, var_name) == 0)
     string = gfc_build_cstring_const (sym->ns->use_stmts->rename->local_name);
   else
     string = gfc_build_cstring_const (var_name);


It may be advisable to replace

+      && strlen(sym->ns->use_stmts->rename->local_name) > 0

by sth. slightly more robust, e.g.

+      && sym->ns->use_stmts->rename->local_name
+      && sym->ns->use_stmts->rename->local_name[0]

Reply via email to