! { dg-do run } ! ! PR fortran/66929 ! Check that the specific FIRST symbol is used for the call to FOO, ! so that the J argument is not assumed to be present module m interface foo module procedure first end interface foo contains elemental function bar(j) result(r) integer, intent(in), optional :: j integer :: r, s(2) ! We used to have NULL dereference here, in case of a missing J argument s = foo(j, [3, 7]) r = sum(s) end function bar elemental function first(i, j) result(r) integer, intent(in), optional :: i integer, intent(in) :: j integer :: r if (present(i)) then r = i else r = -5 end if end function first end module m program p use m integer :: i i = bar() if (i /= -10) call abort end program p