blob: 08a0e8ae7d50d64fe2dd4ecd788cb776ebe6b074 [file] [log] [blame]
! { dg-do run }
!
! PR fortran/54618
!
! Check whether default initialization works with INTENT(OUT)
! and ALLOCATABLE and no segfault occurs with OPTIONAL.
!
subroutine test1()
type typ1
integer :: i = 6
end type typ1
type(typ1) :: x
x%i = 77
call f(x)
if (x%i /= 6) STOP 1
call f()
contains
subroutine f(y1)
class(typ1), intent(out), optional :: y1
end subroutine f
end subroutine test1
subroutine test2()
type mytype
end type mytype
type, extends(mytype):: mytype2
end type mytype2
class(mytype), allocatable :: x,y
allocate (mytype2 :: x)
call g(x)
if (allocated (x) .or. .not. same_type_as (x,y)) STOP 2
allocate (mytype2 :: x)
call h(x)
if (allocated (x) .or. .not. same_type_as (x,y)) STOP 3
call h()
contains
subroutine g(y2)
class(mytype), intent(out), allocatable :: y2
end subroutine g
subroutine h(y3)
class(mytype), optional, intent(out), allocatable :: y3
end subroutine h
end subroutine test2
call test1()
call test2()
end