This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/50556] cannot save namelist group name
- From: "sgk at troutmask dot apl.washington.edu" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 29 Oct 2011 16:49:38 +0000
- Subject: [Bug fortran/50556] cannot save namelist group name
- Auto-submitted: auto-generated
- References: <bug-50556-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50556
--- Comment #4 from Steve Kargl <sgk at troutmask dot apl.washington.edu> 2011-10-29 16:49:38 UTC ---
On Sat, Oct 29, 2011 at 02:47:52PM +0000, burnus at gcc dot gnu.org wrote:
> > One might argue that a "SAVE namelist-group-name" should mean that all
> > namelist-group-objects associate this namelist-group-name gets the SAVE
> > attribute. If this interpretation was correct, then one would expect that
> > text in the Standard would make this clear.
>
> Well, I see in the standard:
>
> "C553 An entity with the SAVE attribute shall be a common block,
> variable, or procedure pointer."
>
> And I would argue that a namelist-group-name is neither a common block, a
> variable nor a procedure pointer.
Well, spotted. I was scanning the standards for 'namelist-group',
so missed C553.
> Thus, I believe that the code in comment 0 is invalid.
>
> Regarding the patch in comment 1: I think it will not work if one swaps the
> order of NAMELIST and SAVE.
Confirmed.
> Untested patch:
>
> --- a/gcc/fortran/symbol.c
> +++ b/gcc/fortran/symbol.c
> @@ -441,6 +441,7 @@ check_conflict (symbol_attribute *attr, const char *name,
> locus *where)
> case FL_LABEL:
> case FL_DERIVED:
> case FL_PARAMETER:
> + case FL_NAMELIST:
> a1 = gfc_code2string (flavors, attr->flavor);
> a2 = save;
> goto conflict;
> @@ -449,7 +450,6 @@ check_conflict (symbol_attribute *attr, const char *name,
> locus *where)
> /* Conflicts between SAVE and PROCEDURE will be checked at
> resolution stage, see "resolve_fl_procedure". */
> case FL_VARIABLE:
> - case FL_NAMELIST:
> default:
> break;
> }
I tested the above. It catches both examples of invalid code
(namelist before save and save before namelist). However, the
error message is a bit strange:
ab.f90:2.12:
save i
1
Error: NAMELIST attribute conflicts with SAVE attribute in 'i' at (1)
NAMELIST is not an attribute. With the attached patch, I get
laptop:kargl[239] gfc4x -c namelist_74.f90
namelist_74.f90:5.15:
namelist /i/ ii ! { dg-error "cannot have a SAVE attribute" }
1
Error: Namelist group name at (1) cannot have a SAVE attribute
namelist_74.f90:9.9:
save i ! { dg-error "cannot have a SAVE attribute" }
1
Error: Namelist group name at (1) cannot have a SAVE attribute