With recent trunk, gfortran incorrectly generates an error for the following standard code: MODULE M1 CONTAINS INTEGER FUNCTION F1() NAMELIST /NML/ F1 F1=1 END FUNCTION INTEGER FUNCTION F2() F2=1 END FUNCTION END MODULE END
INTEGER FUNCTION F1() NAMELIST /NML/ F1 is rejected: NAMELIST /NML/ F1 1 Error: PROCEDURE attribute conflicts with NAMELIST attribute in 'f1' at (1) I didn't check yet whether this is correct; however, g95 and nagf95 accept it whereas ifort rejects it ("A function result is not valid in this context").
There are only two restrictions on the namelist-group-objects, and this one is not in the list: C574 (R553) A namelist-group-object shall not be an assumed-size array. C575 (R552) A namelist-group-object shall not have the PRIVATE attribute if the namelist-group-name has the PUBLIC attribute. (PS: when fixing this, someone should check that the two constraints above are checked)
I'll submit a fix tonight. Paul
Subject: Bug number PR30878 A patch for this bug has been added to the patch tracker. The mailing list url for the patch is http://gcc.gnu.org/ml/gcc-patches/2007-05/msg00623.html
Subject: Bug 30878 Author: pault Date: Fri May 11 11:42:56 2007 New Revision: 124615 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=124615 Log: 2007-05-11 Paul Thomas <pault@gcc.gnu.org> PR fortran/30878 * resolve.c (resolve_fl_namelist): It is not an error if the namelist element is the result variable of the enclosing function. Search for the symbol in current and all parent namespaces for a potential conflict. * symbol.c (check_conflict): Remove the conflict between 'in_namelist' and 'FL_PROCEDURE' because the symbol info is not available to exclude function result variables. * trans-io.c (nml_get_addr_expr): Use the fake result decl if the symbol is an implicit result variable. 2007-05-11 Paul Thomas <pault@gcc.gnu.org> PR fortran/30878 * gfortran.dg/namelist_29.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/namelist_29.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/resolve.c trunk/gcc/fortran/symbol.c trunk/gcc/fortran/trans-io.c trunk/gcc/testsuite/ChangeLog
Fixed on trunk Paul