1! { dg-do run }
2! PR 15553 : the array used to be filled with garbage
3! this problem disappeared between 2004-05-20 and 2004-09-15
4program arrpack
5  implicit none
6
7  double precision x(10,10)
8  integer i, j
9
10  x = -1
11  do i=1,6
12     do j=1,5
13        x(i,j) = i+j*10
14     end do
15  end do
16  call pack (x, 6, 5)
17
18  if (any(reshape(x(1:10,1:3), (/ 30 /)) &
19          /= (/ 11, 12, 13, 14, 15, 16,  &
20                21, 22, 23, 24, 25, 26,  &
21                31, 32, 33, 34, 35, 36,  &
22                41, 42, 43, 44, 45, 46,  &
23                51, 52, 53, 54, 55, 56 /))) call abort ()
24
25contains
26
27  subroutine pack (arr, ni, nj)
28    integer, intent(in) :: ni, nj
29    double precision, intent(inout) :: arr(:,:)
30    double precision :: tmp(ni,nj)
31    tmp(:,:) = arr(1:ni, 1:nj)
32    call copy (arr, tmp, ni, nj)
33  end subroutine pack
34
35  subroutine copy (dst, src, ni, nj)
36    integer, intent(in) :: ni, nj
37    double precision, intent(out) :: dst(ni, nj)
38    double precision, intent(in)  :: src(ni, nj)
39    dst = src
40  end subroutine copy
41
42end program arrpack
43