------- Comment #1 from dominiq at lps dot ens dot fr 2008-08-27 11:00 ------- Hit return too early!-(
The following code module myMod CONTAINS real function proc3( arg1 ) integer :: arg1 proc3 = arg1+7 end function proc3 subroutine proc4( arg1 ) ! real, external :: arg1 procedure(real), pointer :: arg1 print*, 'the func: ', arg1(0) end subroutine proc4 end module myMod program myProg use myMod PROCEDURE (), POINTER :: p => NULL() p => proc3 ! print*, 'the func: ', p(0) call proc4( p ) end program myProg is rejected with: [ibook-dhum] f90/bug% gfc pointer_subs_red.f90 pointer_subs_red.f90:19.16: call proc4( p ) 1 Error: Type/rank mismatch in argument 'arg1' at (1) It is accepted if I uncomment the second commented line, but leads to PR27253. Additional question: is it valid to replace procedure(real), pointer :: arg1 with real, external :: arg1 ? Janus Weil says no and the changed code gives the same error as the original one. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37254