------- Comment #2 from janus at gcc dot gnu dot org 2008-11-16 18:59 ------- (In reply to comment #1) > By the way, the following also fails: > > module m > procedure(), pointer :: procptr > end module m > > use m > external foo > procptr => foo > end > > with Error: 'procptr' in the pointer assignment at (1) cannot be an > l-value since it is a procedure > > I think the "proc_ptr" attribute is not properly saved in the .mod file.
Actually this is not the problem. All attributes are saved properly. The error is fixed by the following trivial patch: Index: gcc/fortran/expr.c =================================================================== --- gcc/fortran/expr.c (revision 141915) +++ gcc/fortran/expr.c (working copy) @@ -3034,7 +3034,8 @@ gfc_check_pointer_assign (gfc_expr *lval } if (lvalue->symtree->n.sym->attr.flavor == FL_PROCEDURE - && lvalue->symtree->n.sym->attr.use_assoc) + && lvalue->symtree->n.sym->attr.use_assoc + && !lvalue->symtree->n.sym->attr.proc_pointer) { gfc_error ("'%s' in the pointer assignment at %L cannot be an " "l-value since it is a procedure", -- janus at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2008-11-16 18:59:41 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38152