diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 226fa605572928ca0ef52c3cad0427e4ab3751f7..066e01963ee447e335c8da5cffaa6c62aa69f13b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2001-02-05  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/47574
+	* gfortran.dg/pr47574.f90:  New test.
+
 2011-02-04  Sebastian Pop  <sebastian.pop@amd.com>
 
 	PR tree-optimization/46194
diff --git a/gcc/testsuite/gfortran.dg/pr47574.f90 b/gcc/testsuite/gfortran.dg/pr47574.f90
new file mode 100644
index 0000000000000000000000000000000000000000..65d168630347e8da110f2a0c3c530b6e4e36dac6
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr47574.f90
@@ -0,0 +1,36 @@
+! { dg-do compile }
+! PR 47574 - this used to ICE.
+      SUBROUTINE EXCH2_UV_AGRID_3D_RL( uPhi, vPhi, myNz )
+
+      IMPLICIT NONE
+
+      INTEGER, parameter :: sNx=32, sNy=32, OLx=4, OLy=4
+
+      INTEGER myNz
+      Real(8) uPhi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,3,1)
+      REAL(8) vPhi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,3,1)
+
+      INTEGER i,j,k,bi,bj
+      REAL(8) uLoc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
+      REAL(8) vLoc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
+      REAL(8) negOne
+
+      negOne = 1.
+        DO k = 1,myNz
+         DO j = 1-OLy,sNy+OLy
+          DO i = 1-OLx,sNx+OLx
+           uLoc(i,j) = uPhi(i,j,k,bi,bj)
+           vLoc(i,j) = vPhi(i,j,k,bi,bj)
+          ENDDO
+         ENDDO
+         DO j = 1-OLy,sNy+OLy
+          DO i = 1,OLx
+           uPhi(1-i,j,k,bi,bj) = vLoc(1-i,j)
+           vPhi(1-i,j,k,bi,bj) = uLoc(1-i,j)*negOne
+          ENDDO
+         ENDDO
+
+        ENDDO
+
+      END
+