From: Tobias Burnus Date: Sat, 30 Apr 2011 15:54:49 +0000 (+0200) Subject: re PR fortran/48800 (ICE with non-allocatable/pointer deferred-shape array) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4e2cf5f5f6bcd75b990df9100e69f044990d9f07;p=gcc.git re PR fortran/48800 (ICE with non-allocatable/pointer deferred-shape array) 2011-04-30 Tobias Burnus PR fortran/48800 * decl.c (gfc_match_import): Don't try to find the symbol if already found. 2011-04-30 Tobias Burnus PR fortran/48800 * gfortran.dg/interface_37.f90: New. From-SVN: r173219 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index e5b8d31e8b4..07d73768154 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2011-04-30 Tobias Burnus + + PR fortran/48800 + * decl.c (gfc_match_import): Don't try to find the + symbol if already found. + 2011-04-30 Paul Thomas PR fortran/48746 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 9901fb16a73..dfbca29a479 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -2995,7 +2995,7 @@ gfc_match_import (void) gfc_error ("Type name '%s' at %C is ambiguous", name); return MATCH_ERROR; } - else if (gfc_current_ns->proc_name->ns->parent != NULL + else if (!sym && gfc_current_ns->proc_name->ns->parent != NULL && gfc_find_symbol (name, gfc_current_ns->proc_name->ns->parent, 1, &sym)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6f72b8a0f2f..1a802f00ec6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-04-30 Tobias Burnus + + PR fortran/48800 + * gfortran.dg/interface_37.f90: New. + 2011-04-30 Paul Thomas PR fortran/48746 diff --git a/gcc/testsuite/gfortran.dg/interface_37.f90 b/gcc/testsuite/gfortran.dg/interface_37.f90 new file mode 100644 index 00000000000..8dbc27630bf --- /dev/null +++ b/gcc/testsuite/gfortran.dg/interface_37.f90 @@ -0,0 +1,31 @@ +--- /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