https://gcc.gnu.org/g:1558181190ab25ed99b61946e5476d5842ef9fee
commit 1558181190ab25ed99b61946e5476d5842ef9fee 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 "
