https://gcc.gnu.org/g:7593c99a9e07db3f4f88d225303173382be1543b

commit 7593c99a9e07db3f4f88d225303173382be1543b
Author: Mikael Morin <[email protected]>
Date:   Mon Sep 28 14:54:21 2026 +0200

    Correction proc_ptr_38

Diff:
---
 gcc/fortran/expr.cc | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc
index 63ae0f86357c..855981644d7c 100644
--- a/gcc/fortran/expr.cc
+++ b/gcc/fortran/expr.cc
@@ -4414,17 +4414,6 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr 
*rvalue,
       const char *name;
 
       attr = gfc_expr_attr (rvalue);
-      if (!((rvalue->expr_type == EXPR_NULL)
-           || (rvalue->expr_type == EXPR_FUNCTION && attr.proc_pointer)
-           || (rvalue->expr_type == EXPR_VARIABLE && attr.proc_pointer)
-           || (rvalue->expr_type == EXPR_VARIABLE
-               && attr.flavor == FL_PROCEDURE)))
-       {
-         gfc_error ("Invalid procedure pointer assignment at %L",
-                    &rvalue->where);
-         return false;
-       }
-
       if (rvalue->expr_type == EXPR_VARIABLE && !attr.proc_pointer)
        {
          /* Check for intrinsics.  */
@@ -4452,6 +4441,17 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr 
*rvalue,
                  }
            }
        }
+      if (!((rvalue->expr_type == EXPR_NULL)
+           || (rvalue->expr_type == EXPR_FUNCTION && attr.proc_pointer)
+           || (rvalue->expr_type == EXPR_VARIABLE && attr.proc_pointer)
+           || (rvalue->expr_type == EXPR_VARIABLE
+               && attr.flavor == FL_PROCEDURE)))
+       {
+         gfc_error ("Invalid procedure pointer assignment at %L",
+                    &rvalue->where);
+         return false;
+       }
+
       if (attr.abstract)
        {
          gfc_error ("Abstract interface %qs is invalid "

Reply via email to