re PR fortran/48800 (ICE with non-allocatable/pointer deferred-shape array)

2011-04-30  Tobias Burnus  <burnus@net-b.de>

        PR fortran/48800
        * decl.c (gfc_match_import): Don't try to find the
        symbol if already found.

2011-04-30  Tobias Burnus  <burnus@net-b.de>

        PR fortran/48800
        * gfortran.dg/interface_37.f90: New.

From-SVN: r173219
This commit is contained in:
Tobias Burnus 2011-04-30 17:54:49 +02:00 committed by Tobias Burnus
parent 2e1df0f00b
commit 4e2cf5f5f6
4 changed files with 43 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2011-04-30 Tobias Burnus <burnus@net-b.de>
PR fortran/48800
* decl.c (gfc_match_import): Don't try to find the
symbol if already found.
2011-04-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48746

View File

@ -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))

View File

@ -1,3 +1,8 @@
2011-04-30 Tobias Burnus <burnus@net-b.de>
PR fortran/48800
* gfortran.dg/interface_37.f90: New.
2011-04-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48746

View File

@ -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