When compiling a generic procedure, the generic name is not entered in the symbol table, which then causes subsequent 'use' statements to fail.
Example: in m_die.F90 we declare: module m_die use m_mpif90, only : MP_perr implicit none private ! except public :: die ! signal an exception interface die; module procedure & die0_, & ! die(where) die1_, & ! die(where,message) die2_, & ! die(where,proc,ier) die4_ ! die(where,mesg1,ival1,mesg2,ival2) end interface etc... Which compiles fine. In other files we try: subroutine IndexBin1_(n,indx,keys,bins,lcs,lns) use m_die, only : die ...and the compiler complains: use m_die, only : die 1 Error: Symbol 'die' referenced at (1) not found in module 'm_die' A quick check of the symbol table confirms the actual procedures are there, but the generic name is missing: 000009ba T ___m_die_MOD_die0_ 00000953 T ___m_die_MOD_die1_ 000008e5 T ___m_die_MOD_die2_ 00000862 T ___m_die_MOD_die4_ but no 'die' -- Summary: generic procedure name not included in symbol table Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: sme at cs dot toronto dot edu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44957