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

Reply via email to