! { dg-do run } ! ! PR fortran/115150 ! ! Check that SHAPE handles zero-sized arrays correctly ! implicit none call one call two contains subroutine one real,allocatable :: A(:),B(:,:) allocate(a(3:0), b(5:1, 2:5)) if (any (shape(a) /= [0])) stop 1 if (any (shape(b) /= [0, 4])) stop 2 if (size(a) /= 0) stop 3 if (size(b) /= 0) stop 4 if (any (lbound(a) /= [1])) stop 5 if (any (lbound(b) /= [1, 2])) stop 6 if (any (ubound(a) /= [0])) stop 5 if (any (ubound(b) /= [0,5])) stop 6 end subroutine two integer :: x1(10), x2(10,10) call f(x1, x2, -3) end subroutine f(y1, y2, n) integer, value :: n integer :: y1(1:n) integer :: y2(1:n,4,2:*) call g(y1, y2) end subroutine g(z1, z2) integer :: z1(..), z2(..) if (any (shape(z1) /= [0])) stop 1 if (any (shape(z2) /= [0, 4, -1])) stop 2 if (size(z1) /= 0) stop 3 if (size(z2) /= 0) stop 4 if (any (lbound(z1) /= [1])) stop 5 if (any (lbound(z2) /= [1, 1, 1])) stop 6 if (any (ubound(z1) /= [0])) stop 5 if (any (ubound(z2) /= [0, 4, -1])) stop 6 end end