aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>2005-01-07 12:56:11 +0100
committerTobias Schlüter <tobi@gcc.gnu.org>2005-01-07 12:56:11 +0100
commitc22535f5022f7f3ff309923a2e5379138209a2df (patch)
treeb0dd7fb5daf88e5477e6eb79e2edc188bc759aaf /gcc
parentd2ba8a75ef0a2bbc078df1a101235a05b6e70787 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/array-1.f9042
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