| ! { 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)) STOP 1 |
| 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) STOP 2 |
| 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) STOP 3 |
| end program |