https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109846
anlauf at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Keywords| |rejects-valid CC| |anlauf at gcc dot gnu.org Last reconfirmed| |2023-05-14 Summary|[rejects valid] |Pointer-valued function |Pointer-valued function |reference rejected as |reference rejected as |actual argument |actual argument | --- Comment #3 from anlauf at gcc dot gnu.org --- Tentative patch to fix the CLASS pointer case: diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc index d91722e6ac6..1955c8471a4 100644 --- a/gcc/fortran/expr.cc +++ b/gcc/fortran/expr.cc @@ -6256,7 +6265,7 @@ gfc_check_vardef_context (gfc_expr* e, bool pointer, bool alloc_obj, && !(sym->attr.flavor == FL_PROCEDURE && sym == sym->result) && !(sym->attr.flavor == FL_PROCEDURE && sym->attr.proc_pointer) && !(sym->attr.flavor == FL_PROCEDURE - && sym->attr.function && sym->attr.pointer)) + && sym->attr.function && attr.pointer)) { if (context) gfc_error ("%qs in variable definition context (%s) at %L is not" Regtesting now. Another workaround is to not specify an INTENT for dummy argument plist, i.e. type(parameter_list) :: plist