! { dg-do run } ! PR 27980 - We used to allocate negative amounts of memory ! for functions returning arrays if lbound > ubound-1. ! Based on a test case by beliavsky@aol.com posted to ! comp.lang.fortran. program xint_func implicit none integer, parameter :: n=3,ii(n)=(/2,0,-1/) integer :: i character(len=80) :: line do i=1,n write (line,'(10I5)') int_func(ii(i)) end do contains function int_func(n) result(ivec) integer, intent(in) :: n integer :: ivec(n) integer :: i if (n > 0) then forall (i=1:n) ivec(i) = i end if end function int_func end program xint_func