40 lines
764 B
Fortran
40 lines
764 B
Fortran
|
! { dg-do run }
|
||
|
!
|
||
|
! PR fortran/41850
|
||
|
!
|
||
|
module test_module
|
||
|
implicit none
|
||
|
contains
|
||
|
subroutine sub2(a)
|
||
|
implicit none
|
||
|
real,allocatable,intent(out),optional :: a(:)
|
||
|
if(present(a)) then
|
||
|
if(allocated(a)) call abort()
|
||
|
allocate(a(1))
|
||
|
a(1) = 5
|
||
|
end if
|
||
|
end subroutine sub2
|
||
|
subroutine sub1(a)
|
||
|
implicit none
|
||
|
real,allocatable,intent(out),optional :: a(:)
|
||
|
! print *,'in sub1'
|
||
|
call sub2(a)
|
||
|
if(present(a)) then
|
||
|
if(a(1) /= 5) call abort()
|
||
|
end if
|
||
|
end subroutine sub1
|
||
|
end module test_module
|
||
|
|
||
|
program test
|
||
|
use test_module
|
||
|
implicit none
|
||
|
real, allocatable :: x(:)
|
||
|
allocate(x(1))
|
||
|
call sub1()
|
||
|
x = 8
|
||
|
call sub1(x)
|
||
|
if(x(1) /= 5) call abort()
|
||
|
end program
|
||
|
|
||
|
! { dg-final { cleanup-modules "test_module" } }
|