! 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) STOP 1 if (ubound (b, 1) .ne. 50) STOP 2 if (lbound (b, 2) .ne. -8) STOP 3 if (ubound (b, 2) .ne. 71) STOP 4 if (lbound (b (:, :), 1) .ne. 1) STOP 5 if (ubound (b (:, :), 1) .ne. 40) STOP 6 if (lbound (b (:, :), 2) .ne. 1) STOP 7 if (ubound (b (:, :), 2) .ne. 80) STOP 8 if (lbound (b (20:30:3, 40), 1) .ne. 1) STOP 9 if (ubound (b (20:30:3, 40), 1) .ne. 4) STOP 10 ptr => b if (lbound (ptr, 1) .ne. 11) STOP 11 if (ubound (ptr, 1) .ne. 50) STOP 12 if (lbound (ptr, 2) .ne. -8) STOP 13 if (ubound (ptr, 2) .ne. 71) STOP 14 end subroutine test end program main