------- Comment #2 from pault at gcc dot gnu dot org 2008-01-04 16:12 ------- Another way of looking as it is that the interface is not getting renamed when MyMod3 is written. This works:
MODULE MyMod1 integer, parameter :: i2_ = Selected_Int_Kind(4) END Module MyMod1 module MyMod2 INTERFACE write_int module procedure write_int_local END INTERFACE contains subroutine write_int_local(value) integer, intent(in) :: value print *,value end subroutine write_int_local end module MyMod2 module MyMod3 USE MyMod2, only: write_MyInt => write_int USE MyMod1, only: i2_ end module MyMod3 module MyMod4 USE MyMod3, write_MyInt => write_int ! Use the original name end module MYMOD4 I believe, although I have not yet checked, that when I reformed the interface handling in modules I did not change the writing part. I'll bet it uses the symbol name, rather than the symtree. This would have worked previously. Paul -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34672