! { dg-do compile } ! { dg-options "-pedantic-errors" } ! ! Contributed by Martin Diehl program elemental_optional implicit none integer :: m(5), r(5) m = 1 r = outer() r = outer(m) contains function outer(o) result(l) integer, intent(in), optional :: o(:) integer :: u(5), l(5) l = inner(o,u) end function outer elemental function inner(a,b) result(x) integer, intent(in), optional :: a integer, intent(in) :: b integer :: x if(present(a)) then x = a*b else x = b endif end function inner end program elemental_optional