https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122434

Paul Thomas <pault at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Blocks|                            |82173
           Assignee|unassigned at gcc dot gnu.org      |pault at gcc dot gnu.org
                 CC|                            |jvdelisle at gcc dot gnu.org,
                   |                            |pault at gcc dot gnu.org
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2025-10-27

--- Comment #1 from Paul Thomas <pault at gcc dot gnu.org> ---
This one-liner fixes it and regtests OK.

diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc
index 117a51c7e9a..ecd2ada36a3 100644
--- a/gcc/fortran/resolve.cc
+++ b/gcc/fortran/resolve.cc
@@ -18956,7 +18956,8 @@ gfc_impure_variable (gfc_symbol *sym)
     {
       if (ns == sym->ns)
        break;
-      if (ns->proc_name->attr.flavor == FL_PROCEDURE && !sym->attr.function)
+      if (ns->proc_name->attr.flavor == FL_PROCEDURE
+         && !(sym->attr.function || sym->attr.result))
        return 1;
     }

Paul


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82173
[Bug 82173] [meta-bug] [PDT] Parameterized derived type errors

Reply via email to