https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95038
kargl at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 CC| |kargl at gcc dot gnu.org Status|UNCONFIRMED |NEW Priority|P3 |P4 Last reconfirmed| |2020-05-10 --- Comment #2 from kargl at gcc dot gnu.org --- This patch allows test.f90 to compile. test1.f90 and test2.f90 compile for me. The question on whether IMPORT is needed or not is for someone else to ponder. Index: gcc/fortran/check.c =================================================================== --- gcc/fortran/check.c (revision 280157) +++ gcc/fortran/check.c (working copy) @@ -3375,7 +3375,8 @@ gfc_check_kind (gfc_expr *x) gfc_current_intrinsic, &x->where); return false; } - if (x->ts.type == BT_PROCEDURE) + if (x->ts.type == BT_PROCEDURE + && !(x->symtree && x->symtree->n.sym->attr.function)) { gfc_error ("%qs argument of %qs intrinsic at %L must be a data entity", gfc_current_intrinsic_arg[0]->name, gfc_current_intrinsic, Index: gcc/fortran/simplify.c =================================================================== --- gcc/fortran/simplify.c (revision 280157) +++ gcc/fortran/simplify.c (working copy) @@ -3969,7 +3969,11 @@ gfc_simplify_ishftc (gfc_expr *e, gfc_expr *s, gfc_exp gfc_expr * gfc_simplify_kind (gfc_expr *e) { - return gfc_get_int_expr (gfc_default_integer_kind, NULL, e->ts.kind); + int knd = e->ts.kind; + if (e->ts.type == BT_PROCEDURE + && e->symtree && e->symtree->n.sym->attr.function) + knd = e->symtree->n.sym->ts.kind; + return gfc_get_int_expr (gfc_default_integer_kind, NULL, knd); }