I've committed the following patch after successful build and regression testing and Tobias' approval in private email.
2012-01-21 Tobias Burnus <bur...@net-b.de> Steven G. Kargl <ka...@gcc.gnu.org> PR fortran/50556 * symbol.c (check_conflict): namelist-group-name cannot have the SAVE attribute. 2012-01-21 Steven G. Kargl <ka...@gcc.gnu.org> PR fortran/50556 * gfortran.dg/namelist_74.f90: New test. * gfortran.dg/namelist_59.f90: Remove SAVE attribute. -- Steve
Index: fortran/symbol.c =================================================================== --- fortran/symbol.c (revision 180650) +++ fortran/symbol.c (working copy) @@ -444,12 +444,15 @@ check_conflict (symbol_attribute *attr, a1 = gfc_code2string (flavors, attr->flavor); a2 = save; goto conflict; - + case FL_NAMELIST: + gfc_error ("Namelist group name at %L cannot have the " + "SAVE attribute", where); + return FAILURE; + break; case FL_PROCEDURE: /* Conflicts between SAVE and PROCEDURE will be checked at resolution stage, see "resolve_fl_procedure". */ case FL_VARIABLE: - case FL_NAMELIST: default: break; } Index: testsuite/gfortran.dg/namelist_59.f90 =================================================================== --- testsuite/gfortran.dg/namelist_59.f90 (revision 180650) +++ testsuite/gfortran.dg/namelist_59.f90 (working copy) @@ -16,7 +16,6 @@ subroutine process(string) integer :: i=1,j=2,k=3 integer ios namelist /cmd/ i,j,k - save cmd lines(1)='&cmd' lines(2)=string lines(3)='/' Index: testsuite/gfortran.dg/namelist_74.f90 =================================================================== --- testsuite/gfortran.dg/namelist_74.f90 (revision 0) +++ testsuite/gfortran.dg/namelist_74.f90 (revision 0) @@ -0,0 +1,10 @@ +! { dg-do compile } +! PR fortran/50556 +subroutine foo + save i + namelist /i/ ii ! { dg-error "cannot have a SAVE attribute" } +end subroutine foo +subroutine bar + namelist /i/ ii + save i ! { dg-error "cannot have a SAVE attribute" } +end subroutine bar