Bug 30878 - Rejects function f1; namelist /nml/ f1
Summary: Rejects function f1; namelist /nml/ f1
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.3.0
: P3 normal
Target Milestone: ---
Assignee: Paul Thomas
URL:
Keywords: rejects-valid
Depends on:
Blocks:
 
Reported: 2007-02-20 07:52 UTC by Joost VandeVondele
Modified: 2007-05-11 12:48 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2007-05-08 13:51:33


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Joost VandeVondele 2007-02-20 07:52:36 UTC
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
Comment 1 Tobias Burnus 2007-02-20 15:59:42 UTC
   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").
Comment 2 Francois-Xavier Coudert 2007-03-23 21:41:09 UTC
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)
Comment 3 Paul Thomas 2007-05-08 13:51:33 UTC
I'll submit a fix tonight.

Paul
Comment 4 patchapp@dberlin.org 2007-05-10 08:14:43 UTC
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
Comment 5 Paul Thomas 2007-05-11 12:43:08 UTC
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

Comment 6 Paul Thomas 2007-05-11 12:48:26 UTC
Fixed on trunk

Paul