Consider the following module:
module m contains subroutine a(x,f) real :: x interface real function f(y) real,intent(in) :: y end function end interface print *,f(x) end subroutine real function func(z) real,intent(inout) :: z func = z**2 end function subroutine caller call a(4.3,func) end subroutine end module ifort complains: error #7061: The characteristics of dummy argument 1 of the associated actual procedure differ from the characteristics of dummy argument 1 of the dummy procedure. (12.2) [FUNC] call a(4.3,func) Although gfortran, g95 and sunf95 accept it, I think ifort is right to reject it (but I haven't checked the standard yet). The same check should also be applied to procedure pointer assignments. Btw "gfortran -Wall -Wextra" produces this warning: test.f90:5: warning: unused parameter f This is bogus, because 'f' *is* used in the subroutine a. -- Summary: Procedures as actual arguments: Check intent of arguments Product: gcc Version: 4.5.0 Status: UNCONFIRMED Keywords: accepts-invalid Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: janus at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40039