diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/array_1.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/array_1.f90 | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/array_1.f90 b/gcc/testsuite/gfortran.dg/array_1.f90 new file mode 100644 index 000000000..6609025a5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/array_1.f90 @@ -0,0 +1,42 @@ +! { dg-do run } +! PR 15553 : the array used to be filled with garbage +! this problem disappeared between 2004-05-20 and 2004-09-15 +program arrpack + implicit none + + double precision x(10,10) + integer i, j + + x = -1 + do i=1,6 + do j=1,5 + x(i,j) = i+j*10 + end do + end do + call pack (x, 6, 5) + + if (any(reshape(x(1:10,1:3), (/ 30 /)) & + /= (/ 11, 12, 13, 14, 15, 16, & + 21, 22, 23, 24, 25, 26, & + 31, 32, 33, 34, 35, 36, & + 41, 42, 43, 44, 45, 46, & + 51, 52, 53, 54, 55, 56 /))) call abort () + +contains + + subroutine pack (arr, ni, nj) + integer, intent(in) :: ni, nj + double precision, intent(inout) :: arr(:,:) + double precision :: tmp(ni,nj) + tmp(:,:) = arr(1:ni, 1:nj) + call copy (arr, tmp, ni, nj) + end subroutine pack + + subroutine copy (dst, src, ni, nj) + integer, intent(in) :: ni, nj + double precision, intent(out) :: dst(ni, nj) + double precision, intent(in) :: src(ni, nj) + dst = src + end subroutine copy + +end program arrpack |