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

--- Comment #3 from Steve Kargl <kargl at gcc dot gnu.org> ---
This diff 

diff --git a/gcc/fortran/trans-io.cc b/gcc/fortran/trans-io.cc
index 9360bddb30a..bbcfc292c0a 100644
--- a/gcc/fortran/trans-io.cc
+++ b/gcc/fortran/trans-io.cc
@@ -1698,7 +1698,7 @@ 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
+  if (sym && sym->attr.use_rename
       && sym->ns->use_stmts->rename)
     string = gfc_build_cstring_const (sym->ns->use_stmts->rename->local_name);
   else

yields

    _gfortran_st_set_nml_var (&dt_parm.0, &tol, &"y"[1]{lb: 1 sz: 1}, 4, 0,
    {.elem_len=4, .version=0, .rank=0, .type=1});

which then fixes the issue.  I however do not understand the only 
logic in trans-io.cc.  The code is

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

The negated sym->attr.use_only seems to short-circuit the actually
use of a renamed symbol?

Reply via email to