| ! Check that lbound() and ubound() work correctly for assumed shapes. |
| ! { dg-do run } |
| program main |
| integer, dimension (40, 80) :: a = 1 |
| call test (a) |
| contains |
| subroutine test (b) |
| integer, dimension (11:, -8:), target :: b |
| integer, dimension (:, :), pointer :: ptr |
| |
| if (lbound (b, 1) .ne. 11) call abort |
| if (ubound (b, 1) .ne. 50) call abort |
| if (lbound (b, 2) .ne. -8) call abort |
| if (ubound (b, 2) .ne. 71) call abort |
| |
| if (lbound (b (:, :), 1) .ne. 1) call abort |
| if (ubound (b (:, :), 1) .ne. 40) call abort |
| if (lbound (b (:, :), 2) .ne. 1) call abort |
| if (ubound (b (:, :), 2) .ne. 80) call abort |
| |
| if (lbound (b (20:30:3, 40), 1) .ne. 1) call abort |
| if (ubound (b (20:30:3, 40), 1) .ne. 4) call abort |
| |
| ptr => b |
| if (lbound (ptr, 1) .ne. 1) call abort |
| if (ubound (ptr, 1) .ne. 40) call abort |
| if (lbound (ptr, 2) .ne. 1) call abort |
| if (ubound (ptr, 2) .ne. 80) call abort |
| end subroutine test |
| end program main |