http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45740
--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> 2010-10-02 11:33:43 UTC --- Summary as far I understand it. Cf. http://j3-fortran.org/pipermail/j3/2010-September/003852.html : module m procedure(), pointer :: p, p2 protected :: p end module m subroutine two use m procedure(), pointer :: ptr2 ptr2 => p ! Invalid end subroutine two It is invalid as "p" is PROTECTED, but gfortran does not diagnose this. That's something the variable-definition patch misses. * * * subroutine one use m procedure(), pointer :: ptr1 => p2 end subroutine one That's invalid as "p2" is a pointer, cf. PR 45290.