Commit 4e2cf5f5 by Tobias Burnus Committed by Tobias Burnus

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
parent 2e1df0f0
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> 2011-04-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48746 PR fortran/48746
......
...@@ -2995,7 +2995,7 @@ gfc_match_import (void) ...@@ -2995,7 +2995,7 @@ gfc_match_import (void)
gfc_error ("Type name '%s' at %C is ambiguous", name); gfc_error ("Type name '%s' at %C is ambiguous", name);
return MATCH_ERROR; 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_find_symbol (name,
gfc_current_ns->proc_name->ns->parent, gfc_current_ns->proc_name->ns->parent,
1, &sym)) 1, &sym))
......
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> 2011-04-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48746 PR fortran/48746
......
--- /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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment