https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105847
kargl at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-06-04 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #1 from kargl at gcc dot gnu.org --- Found via https://groups.google.com/g/comp.lang.fortran/c/CfODg8wnF8M The following code should compile and execute to completion. ! { dg-do run } module m integer :: name_in_module = 123 end module program foo use m, name_in_program => name_in_module namelist /nl/ name_in_program if (name_in_program /= 123) stop 1 open(unit=10, file='fort.10', status='replace') write(10,nl) close(10) name_in_program = 42 if (name_in_program /= 42) stop 2 open(unit=10, file='fort.10', status='old') read(10,nl) close(10, status='delete') if (name_in_program /= 123) stop 3 end The following patch fixes the problem. diff --git a/gcc/fortran/trans-io.cc b/gcc/fortran/trans-io.cc index 732221f848b..4621ff1c5b7 100644 --- a/gcc/fortran/trans-io.cc +++ b/gcc/fortran/trans-io.cc @@ -1666,8 +1666,10 @@ transfer_namelist_element (stmtblock_t * block, const char * var_name, gcc_assert (sym || c); /* Build the namelist object name. */ - - string = gfc_build_cstring_const (var_name); + if (sym->attr.use_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); /* Build ts, as and data address using symbol or component. */