re PR fortran/48800 (ICE with non-allocatable/pointer deferred-shape array)
authorTobias Burnus <burnus@net-b.de>
Sat, 30 Apr 2011 15:54:49 +0000 (17:54 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Sat, 30 Apr 2011 15:54:49 +0000 (17:54 +0200)
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

gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/interface_37.f90 [new file with mode: 0644]

index e5b8d31e8b4c313db7deb291791c5360425da451..07d73768154dceee6e20d8151c53b988f3071601 100644 (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
index 9901fb16a73a08b3d4aad5d842aca15205b53e77..dfbca29a47958fdd62233ce53205b48e6ce2f006 100644 (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))
index 6f72b8a0f2f9b972fffd34d13897311b1c50cb79..1a802f00ec6b24cdb86560e3def7d8a8445ab3e3 100644 (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
diff --git a/gcc/testsuite/gfortran.dg/interface_37.f90 b/gcc/testsuite/gfortran.dg/interface_37.f90
new file mode 100644 (file)
index 0000000..8dbc276
--- /dev/null
@@ -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