http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45521

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-04-19
            Version|4.6.0                       |4.8.0
     Ever Confirmed|0                           |1

--- Comment #4 from janus at gcc dot gnu.org 2012-04-19 12:45:28 UTC ---
Here is a preliminary patch which makes gfortran accept the code in comment #2:

Index: gcc/fortran/interface.c
===================================================================
--- gcc/fortran/interface.c    (revision 186485)
+++ gcc/fortran/interface.c    (working copy)
@@ -955,7 +955,9 @@ generic_correspondence (gfc_formal_arglist *f1, gf
     goto next;

       if (f2 != NULL && (compare_type_rank (f1->sym, f2->sym)
-             || compare_type_rank (f2->sym, f1->sym)))
+             || compare_type_rank (f2->sym, f1->sym))
+      && !((f1->sym->attr.allocatable && f2->sym->attr.pointer)
+           || (f2->sym->attr.allocatable && f1->sym->attr.pointer)))
     goto next;

       /* Now search for a disambiguating keyword argument starting at
@@ -966,7 +968,9 @@ generic_correspondence (gfc_formal_arglist *f1, gf
         continue;

       sym = find_keyword_arg (g->sym->name, f2_save);
-      if (sym == NULL || !compare_type_rank (g->sym, sym))
+      if (sym == NULL || !compare_type_rank (g->sym, sym)
+          || (sym->attr.allocatable && g->sym->attr.pointer)
+          || (sym->attr.pointer && g->sym->attr.allocatable))
         return 1;
     }

Reply via email to