diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/allocate_zerosize_2.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/allocate_zerosize_2.f90 | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/allocate_zerosize_2.f90 b/gcc/testsuite/gfortran.dg/allocate_zerosize_2.f90 new file mode 100644 index 000000000..bd6d299f4 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/allocate_zerosize_2.f90 @@ -0,0 +1,23 @@ +! { 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 |