https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94408
Bug ID: 94408 Summary: Spurious error: ‘rw_nl_grid’ must be a module procedure or an external procedure Product: gcc Version: 9.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: michalak at ucar dot edu Target Milestone: --- The following session log contains a listing of the reproducer program, test.F90, and a set of compile and run commands that demonstrate the issue. This was collected on the NCAR supercomputer cheyenne.ucar.edu using Intel, then PGI, then GCC Fortran compilers. Intel and PGI compile the code without issue. Note: although the session log indicates gnu/8.3.0, the test was also run with the most recent version of gcc installed on Cheyenne, 9.1.0, and produced identical results. Thank you. John Michalakes, Software Engineer Cooperative Programs for the Advancement of Earth System Sciences (CPAESS) University Corporation for Atmospheric Research micha...@ucar.edu === cheyenne:/glade/u/home/michalak/nf 1007 > cat session.txt Script started on Sun 29 Mar 2020 05:58:20 AM MDT > cat test.F90 module mod_input type config_t integer :: domain_id contains procedure :: init => rw_config procedure :: rw_nl_grid end type config_t type namelist_t type(config_t) :: config end type namelist_t interface module subroutine rw_config (this,iunit) implicit none class (config_t) :: this integer, intent(in), optional :: iunit end subroutine rw_config module subroutine rw_nl_grid ( this, iunit ) implicit none class (config_t) :: this integer, optional, intent(in) :: iunit end subroutine rw_nl_grid end interface contains module subroutine rw_config (this,iunit) implicit none class (config_t) :: this integer, intent(in), optional :: iunit call this%rw_nl_grid end subroutine rw_config module subroutine rw_nl_grid ( this, iunit ) implicit none class (config_t) :: this integer, optional, intent(in) :: iunit end subroutine rw_nl_grid end module mod_input module neptune_write_native contains subroutine Run use mod_input type(namelist_t) :: nl end subroutine Run end module neptune_write_native > module load intel Lmod is automatically replacing "gnu/8.3.0" with "intel/18.0.5". Due to MODULEPATH changes, the following have been reloaded: 1) hdf5-mpi/1.10.5 2) mpt/2.19 3) ncarcompilers/0.5.0 michalak/nf> ifort -c test.F90 michalak/nf> module load pgi Lmod is automatically replacing "intel/18.0.5" with "pgi/19.3". Due to MODULEPATH changes, the following have been reloaded: 1) hdf5-mpi/1.10.5 2) mpt/2.19 3) ncarcompilers/0.5.0 > pgf90 -c test.F90 > module load gnu Lmod is automatically replacing "pgi/19.3" with "gnu/8.3.0". Due to MODULEPATH changes, the following have been reloaded: 1) hdf5-mpi/1.10.5 2) mpt/2.19 3) ncarcompilers/0.5.0 > gfortran test.F90 test.F90:40:8: use mod_input 1 Error: ‘rw_nl_grid’ must be a module procedure or an external procedure with an explicit interface at (1) michalak/nf> exit exit Script done on Sun 29 Mar 2020 05:59:25 AM MDT