fortran/
authoreedelman <eedelman@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Dec 2005 00:47:13 +0000 (00:47 +0000)
committereedelman <eedelman@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Dec 2005 00:47:13 +0000 (00:47 +0000)
2005-12-14  Erik Edelmann  <eedelman@gcc.gnu.org>

        PR fortran/18197
        * resolve.c (resolve_formal_arglist): Remove code to set
        the type of a function symbol from it's result symbol.

testsuite/
2005-12-14  Erik Edelmann  <eedelman@gcc.gnu.org>

        PR fortran/18197
        * gfortran.dg/dummy_functions_1.f90: New.

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

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

index cc6824b..0d364d4 100644 (file)
@@ -1,3 +1,9 @@
+2005-12-14  Erik Edelmann  <eedelman@gcc.gnu.org>
+
+       PR fortran/18197
+       * resolve.c (resolve_formal_arglist): Remove code to set
+       the type of a function symbol from it's result symbol.
+
 2005-12-13  Richard Guenther  <rguenther@suse.de>
 
        * trans-expr.c (gfc_conv_substring): Use fold_build2 and
index e363763..d9f0e77 100644 (file)
@@ -137,16 +137,6 @@ resolve_formal_arglist (gfc_symbol * proc)
        {
          if (!sym->attr.function || sym->result == sym)
            gfc_set_default_type (sym, 1, sym->ns);
-         else
-           {
-              /* Set the type of the RESULT, then copy.  */
-             if (sym->result->ts.type == BT_UNKNOWN)
-               gfc_set_default_type (sym->result, 1, sym->result->ns);
-
-             sym->ts = sym->result->ts;
-             if (sym->as == NULL)
-               sym->as = gfc_copy_array_spec (sym->result->as);
-           }
        }
 
       gfc_resolve_array_spec (sym->as, 0);
index 85a4828..664fa4a 100644 (file)
@@ -1,3 +1,8 @@
+2005-12-14  Erik Edelmann  <eedelman@gcc.gnu.org>
+
+       PR fortran/18197
+       * gfortran.dg/dummy_functions_1.f90: New.
+
 2005-12-14  Ulrich Weigand  <uweigand@de.ibm.com>
 
        PR rtl-optimization/25310
@@ -38939,3 +38944,4 @@ rlsruhe.de>
        correspond to c-torture 1.11.
 
        * New file.
+
diff --git a/gcc/testsuite/gfortran.dg/dummy_functions_1.f90 b/gcc/testsuite/gfortran.dg/dummy_functions_1.f90
new file mode 100644 (file)
index 0000000..dfcf644
--- /dev/null
@@ -0,0 +1,36 @@
+! { dg-do compile }
+! PR 18197: Check that dummy functions with RESULT variable and dimension works.
+module innerfun
+contains
+  function f(n,x) result(y)
+    integer, intent(in) :: n
+    real, dimension(:), intent(in) :: x
+    real, dimension(n) :: y
+    y = 1
+  end function f
+end module innerfun
+
+module outerfun
+contains
+   subroutine foo(n,funname)
+     integer, intent(in) :: n
+     real, dimension(n) :: y
+     real, dimension(2) :: x
+     interface
+       function funname(n,x) result(y)
+         integer, intent(in) :: n
+         real, dimension(:), intent(in) :: x
+         real, dimension(n)  :: y
+       end function funname
+     end interface
+
+     y = funname(n, (/ 0.2, 0.3 /) )
+
+   end subroutine foo
+end module outerfun
+
+program test
+   use outerfun
+   use innerfun
+   call foo(3,f)
+end program test