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

Reply via email to