http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50659
janus at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code Summary|[4.5/4.6/4.7 Regression] |[4.5/4.6/4.7 Regression] |[F03] ICE on invalid with |[F03] ICE with PROCEDURE |procedure interface |statement --- Comment #7 from janus at gcc dot gnu.org 2011-10-08 10:49:38 UTC --- (In reply to comment #4) > I'm still not completely sure if the test case is valid or not. I could not > find anything in the standard which forbids it, so I'm assuming it is valid > for > now. For what it's worth, the test case in comment #2 is accepted by g95, PGI and PathScale. It is rejected by ifort with: error #8169: The specified interface is not declared. [PROC] procedure(Proc) :: Proc_Get ------------^ To my understanding, this is a bug in ifort. However, ifort does accept the following variant (which also ICEs with gfortran): module m integer :: arrSize end module module m2 contains function Proc (arg) use m double precision, dimension(arrSize) :: proc double precision :: arg end function end program p use m2 implicit none procedure(Proc) :: Proc_Get end In summary, this test case is accepted by ifort, g95, PGI and PathScale, which I think is strong empirical evidence that it is valid (though it's not a proof, of course). I don't have access to any other compiler which supports PROCEDURE statements. Unless anyone can show me a restriction in the standard which makes it illegal, I'll continue to assume that this is an ICE-on-valid bug (which makes it even more severe).