Hi Paul,
I must say that I was thinking rather more of the INTENT(IN) case to make sure that it is accepted.
Ah, I misunderstood that. You're right - also check legal code :-) I've committed the attached test case as obvious (after verifying that it passes. It checks against functions and subrotuines with INTENT(IN) and unspecified intent. Best regards Thomas Added test case to make sure that legal cases still pass. gcc/testsuite/ChangeLog: PR fortran/96469 * gfortran.dg/do_check_14.f90: New test.
! { dg-do compile } ! PR fortran/96469 - make sure that all legal variants pass. module x implicit none contains subroutine sub_intent_in(i) integer, intent(in) :: i end subroutine sub_intent_in subroutine sub_intent_unspec(i) integer :: i end subroutine sub_intent_unspec integer function fcn_intent_in(i) integer, intent(in) :: i fcn_intent_in = i + 42 end function fcn_intent_in integer function fcn_intent_unspec (i) integer :: i fcn_intent_unspec = i + 42 end function fcn_intent_unspec end module x program main use x implicit none integer :: i1, i2, i3, i4 integer :: k, l do i1=1,10 call sub1 end do do i2=1,10 call sub2 end do do i3 = 1,10 k = fcn3() end do do i4=1,10 l = fcn4() end do contains subroutine sub1 call sub_intent_in (i1) end subroutine sub1 subroutine sub2 integer :: m m = fcn_intent_in (i2) print *,m end subroutine sub2 integer function fcn3() call sub_intent_unspec (i3) fcn3 = 42 end function fcn3 integer function fcn4() fcn4 = fcn_intent_unspec (i4) end function fcn4 end program main