| ! { dg-do run } |
| ! PR fortran/35830 |
| ! |
| module m |
| contains |
| subroutine one(a) |
| integer a(:) |
| print *, lbound(a), ubound(a), size(a) |
| if ((lbound(a,dim=1) /= 1) .or. (ubound(a,dim=1) /= 3)) & |
| call abort() |
| print *, a |
| if (any(a /= [1,2,3])) call abort() |
| end subroutine one |
| end module m |
| |
| program test |
| use m |
| implicit none |
| call foo1(one) |
| call foo2(one) |
| contains |
| subroutine foo1(f) |
| ! The following interface block is needed |
| ! for NAG f95 as it wrongly does not like |
| ! use-associated interfaces for PROCEDURE |
| ! (It is not needed for gfortran) |
| interface |
| subroutine bar(a) |
| integer a(:) |
| end subroutine |
| end interface |
| procedure(bar) :: f |
| call f([1,2,3]) ! Was failing before |
| end subroutine foo1 |
| subroutine foo2(f) |
| interface |
| subroutine f(a) |
| integer a(:) |
| end subroutine |
| end interface |
| call f([1,2,3]) ! Works |
| end subroutine foo2 |
| end program test |