OSDN Git Service

2011-04-30 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 30 Apr 2011 15:54:49 +0000 (15:54 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 30 Apr 2011 15:54:49 +0000 (15:54 +0000)
        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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173219 138bc75d-0d04-0410-961f-82ee72b054a4

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

index e5b8d31..07d7376 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 9901fb1..dfbca29 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 6f72b8a..1a802f0 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