re PR fortran/48624 (gfortran DECL issues in function declaration)
authorTobias Burnus <burnus@net-b.de>
Sun, 17 Apr 2011 07:34:35 +0000 (09:34 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Sun, 17 Apr 2011 07:34:35 +0000 (09:34 +0200)
2011-05-17  Tobias Burnus  <burnus@net-b.de>

        PR fortran/48624
        * trans-decl.c (gfc_get_extern_function_decl): Fix decl
        for external procedures with proc arguments.

From-SVN: r172604

gcc/fortran/ChangeLog
gcc/fortran/trans-decl.c

index 77426165b62346720a275f5789aa1c83ceaa8b6d..cdb53e7952d6cc0e523354d9e25cd988884c00f5 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-17  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/48624
+       * trans-decl.c (gfc_get_extern_function_decl): Fix decl
+       for external procedures with proc arguments.
+
 2011-04-15  Michael Matz  <matz@suse.de>
 
        * trans-array.c (toplevel): Include gimple.h.
index 784dfc85a653301765ea2ace77c408966150f08b..866720f96a497ac0c8391aef00f2e5ec1c6777d0 100644 (file)
@@ -1527,7 +1527,6 @@ gfc_get_extern_function_decl (gfc_symbol * sym)
   tree name;
   tree mangled_name;
   gfc_gsymbol *gsym;
-  bool proc_formal_arg;
 
   if (sym->backend_decl)
     return sym->backend_decl;
@@ -1544,27 +1543,10 @@ gfc_get_extern_function_decl (gfc_symbol * sym)
      return the backend_decl.  */
   gsym =  gfc_find_gsymbol (gfc_gsym_root, sym->name);
 
-  /* Do not use procedures that have a procedure argument because this
-     can result in problems of multiple decls during inlining.  */
-  proc_formal_arg = false;
-  if (gsym && gsym->ns && gsym->ns->proc_name)
-    {
-      gfc_formal_arglist *formal = gsym->ns->proc_name->formal;
-      for (; formal; formal = formal->next)
-       {
-         if (formal->sym && formal->sym->attr.flavor == FL_PROCEDURE)
-           {
-             proc_formal_arg = true;
-             break;
-           }
-       }
-    }
-
   if (gfc_option.flag_whole_file
        && (!sym->attr.use_assoc || sym->attr.if_source != IFSRC_DECL)
        && !sym->backend_decl
        && gsym && gsym->ns
-       && !proc_formal_arg
        && ((gsym->type == GSYM_SUBROUTINE) || (gsym->type == GSYM_FUNCTION))
        && (gsym->ns->proc_name->backend_decl || !sym->attr.intrinsic))
     {