38 lines
865 B
Fortran
38 lines
865 B
Fortran
! { dg-do run }
|
|
! { dg-options "-fbounds-check" }
|
|
! PR fortran/31119
|
|
!
|
|
module sub_mod
|
|
contains
|
|
elemental subroutine set_optional(i,idef,iopt)
|
|
integer, intent(out) :: i
|
|
integer, intent(in) :: idef
|
|
integer, intent(in), optional :: iopt
|
|
if (present(iopt)) then
|
|
i = iopt
|
|
else
|
|
i = idef
|
|
end if
|
|
end subroutine set_optional
|
|
|
|
subroutine sub(ivec)
|
|
integer, intent(in), optional :: ivec(:)
|
|
integer :: ivec_(2)
|
|
call set_optional(ivec_,(/1,2/))
|
|
if (any (ivec_ /= (/1, 2/))) call abort
|
|
call set_optional(ivec_,(/1,2/),ivec)
|
|
if (present (ivec)) then
|
|
if (any (ivec_ /= ivec)) call abort
|
|
else
|
|
if (any (ivec_ /= (/1, 2/))) call abort
|
|
end if
|
|
end subroutine sub
|
|
end module sub_mod
|
|
|
|
program main
|
|
use sub_mod, only: sub
|
|
call sub()
|
|
call sub((/4,5/))
|
|
end program main
|
|
! { dg-final { cleanup-modules "sub_mod" } }
|