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; }