| ! { dg-do run } |
| ! |
| ! Based on coarray_lib_token_4.f90 but checking whether the bounds |
| ! are correctly handled. |
| ! |
| program test_caf |
| implicit none |
| integer, allocatable :: A(:)[:] |
| integer, save :: B(3)[*] |
| integer :: i |
| |
| allocate (A(3)[*]) |
| A = [1, 2, 3 ] |
| B = [9, 7, 4 ] |
| call foo (A, A, test=1) |
| call foo (A(2:3), B, test=2) |
| call foo (B, A, test=3) |
| contains |
| subroutine foo(x, y, test) |
| integer :: x(:)[*] |
| integer, contiguous :: y(:)[*] |
| integer :: test |
| integer :: i, j |
| call bar (x) |
| call expl (y) |
| i = lcobound(x, dim=1) |
| j = ucobound(x, dim=1) |
| if (i /= 1 .or. j /= num_images()) STOP 1 |
| i = lcobound(y, dim=1) |
| j = ucobound(y, dim=1) |
| if (i /= 1 .or. j /= num_images()) STOP 2 |
| end subroutine foo |
| |
| subroutine bar(y) |
| integer :: y(:)[*] |
| integer :: i, j |
| i = lcobound(y, dim=1) |
| j = ucobound(y, dim=1) |
| if (i /= 1 .or. j /= num_images()) STOP 3 |
| end subroutine bar |
| |
| subroutine expl(z) |
| integer :: z(*)[*] |
| integer :: i, j |
| i = lcobound(z, dim=1) |
| j = ucobound(z, dim=1) |
| if (i /= 1 .or. j /= num_images()) STOP 4 |
| end subroutine expl |
| end program test_caf |