From patchwork Tue Jan 8 21:06:17 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [fortran] PR47203 Use of module with same name as subroutine Date: Tue, 08 Jan 2013 11:06:17 -0000 From: Mikael Morin X-Patchwork-Id: 210532 Message-Id: <50EC8A49.5080802@sfr.fr> To: gfortran , gcc-patches Hello, a small, unexciting bug. For the case: subroutine m() use m end subroutine m the USE statement is rejected, but it is not if the subroutine is contained. In the latter case, the namespace of the symbol of the subroutine is the parent namespace, which confuses the error condition in check_for_ambiguous. Regression tested on x86_64-unknown-linux-gnu. OK for trunk? Mikael 2013-01-08 Mikael Morin PR fortran/47203 * module.c (check_for_ambiguous): Get the current program unit using gfc_current_ns. 2013-01-08 Mikael Morin PR fortran/47203 * gfortran.dg/use_28.f90: New test. diff --git a/module.c b/module.c index f3b3caa..604acbb 100644 --- a/module.c +++ b/module.c @@ -4493,7 +4493,7 @@ check_for_ambiguous (gfc_symbol *st_sym, pointer_info *info) module_locus locus; symbol_attribute attr; - if (st_sym->ns->proc_name && st_sym->name == st_sym->ns->proc_name->name) + if (st_sym->name == gfc_current_ns->proc_name->name) { gfc_error ("'%s' of module '%s', imported at %C, is also the name of the " "current program unit", st_sym->name, module_name);