From patchwork Sat Apr 30 16:36:20 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [Fortran] PR 48800 - fix "IMPORT :: symbol" Date: Sat, 30 Apr 2011 06:36:20 -0000 From: Tobias Burnus X-Patchwork-Id: 93505 Message-Id: <4DBC3A84.1080402@net-b.de> To: Jerry DeLisle Cc: gcc patches , gfortran Am 30.04.2011 17:31, schrieb Jerry DeLisle: > On 04/29/2011 02:45 PM, Tobias Burnus wrote: >> Nearly obvious patch. Build and regtested on x86-64-linux. >> OK for the trunk? >> > Thats a oneliner. OK Thanks for the review! Unfortunately, I had submitted/committed the wrong test case. (Both test cases are extremely similar, but test something quite different.) I have now corrected the test suite using the attached patch. (Rev. 173221). Tobias Index: gcc/testsuite/gfortran.dg/interface_37.f90 =================================================================== --- gcc/testsuite/gfortran.dg/interface_37.f90 (Revision 173218) +++ gcc/testsuite/gfortran.dg/interface_37.f90 (Arbeitskopie) @@ -1,31 +0,0 @@ ---- /dev/null -+++ gcc/testsuite/gfortran.dg/interface_36.f90 2011-04-29 19:10:43.000000000 +0200 -@@ -0,0 +1,28 @@ -+! { dg-do compile } -+! -+! PR fortran/48800 -+! -+! Contributed by Daniel Carrera -+! -+ pure function runge_kutta_step(t, r_, dr, h) result(res) -+ real, intent(in) :: t, r_(:), h -+ real, dimension(:), allocatable :: k1, k2, k3, k4, res -+ integer :: N -+ -+ interface -+ pure function dr(t, r_) ! { dg-error "cannot have a deferred shape" } -+ real, intent(in) :: t, r_(:) -+ real :: dr(:) -+ end function -+ end interface -+ -+ N = size(r_) -+ allocate(k1(N),k2(N),k3(N),k4(N),res(N)) -+ -+ k1 = dr(t, r_) -+ k2 = dr(t + h/2, r_ + k1*h/2) -+ k3 = dr(t + h/2, r_ + k2*h/2) -+ k4 = dr(t + h , r_ + k3*h) -+ -+ res = r_ + (k1 + 2*k2 + 2*k3 + k4) * h/6 -+ end function Index: gcc/testsuite/gfortran.dg/import9.f90 =================================================================== --- gcc/testsuite/gfortran.dg/import9.f90 (Revision 0) +++ gcc/testsuite/gfortran.dg/import9.f90 (Revision 0) @@ -0,0 +1,30 @@ +! { dg-do compile } +! +! PR fortran/48821 +! +! Contributed by Daniel Carrera +! + +contains + pure subroutine rk4_vec(t, Y, dY, h) + real, intent(inout) :: t, Y(:) + real, intent(in) :: h + real, dimension(size(Y)) :: k1, k2, k3, k4 + + interface + pure function dY(t0, y0) + import :: Y + real, intent(in) :: t0, y0(size(Y)) + real :: dY(size(y0)) + end function + end interface + + k1 = dY(t, Y) + k2 = dY(t + h/2, Y + k1*h/2) + k3 = dY(t + h/2, Y + k2*h/2) + k4 = dY(t + h , Y + k3*h) + + Y = Y + (k1 + 2*k2 + 2*k3 + k4) * h/6 + t = t + h + end subroutine +end Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (Revision 173219) +++ gcc/testsuite/ChangeLog (Arbeitskopie) @@ -1,6 +1,13 @@ 2011-04-30 Tobias Burnus - PR fortran/48800 + PR fortran/48821 + * gfortran.dg/import9.f90: New, proper test. + * gfortran.dg/interface_37.f90: Remove bogus + test (bogus copy of interface_36.f90). + +2011-04-30 Tobias Burnus + + PR fortran/48821 * gfortran.dg/interface_37.f90: New. 2011-04-30 Paul Thomas Index: gcc/fortran/ChangeLog =================================================================== --- gcc/fortran/ChangeLog (Revision 173219) +++ gcc/fortran/ChangeLog (Arbeitskopie) @@ -1,6 +1,6 @@ 2011-04-30 Tobias Burnus - PR fortran/48800 + PR fortran/48821 * decl.c (gfc_match_import): Don't try to find the symbol if already found.