diff options
author | Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> | 2005-01-07 12:56:11 +0100 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2005-01-07 12:56:11 +0100 |
commit | c22535f5022f7f3ff309923a2e5379138209a2df (patch) | |
tree | b0dd7fb5daf88e5477e6eb79e2edc188bc759aaf | |
parent | d2ba8a75ef0a2bbc078df1a101235a05b6e70787 (diff) | |
download | gcc-c22535f5022f7f3ff309923a2e5379138209a2df.zip gcc-c22535f5022f7f3ff309923a2e5379138209a2df.tar.gz gcc-c22535f5022f7f3ff309923a2e5379138209a2df.tar.bz2 |
re PR fortran/15553 (Array copy operation produces garbage)
PR fortran/15553
* gfortran.dg/array-1.f90: New test.
From-SVN: r93049
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/array-1.f90 | 42 |
2 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 321a27a..24d1b1c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-01-07 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/15553 + * gfortran.dg/array-1.f90: New test. + 2005-01-07 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/19283 diff --git a/gcc/testsuite/gfortran.dg/array-1.f90 b/gcc/testsuite/gfortran.dg/array-1.f90 new file mode 100644 index 0000000..6609025 --- /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 |