------- Comment #1 from kargl at gcc dot gnu dot org 2010-07-15 17:48 ------- (In reply to comment #0) > 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'
There is insufficient code here to try to reproduce your problem. Please attach a small self-contained example. It may also be advantageous to update your version of gfortran to 4.4.4, 4.5.0, or trunk. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44957