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?