Commit for Asher Langton <langton2@llnl.gov>
fortran/ * decl.c (gfc_match_save): Changed duplicate SAVE errors to warnings in the absence of strict standard conformance * symbol.c (gfc_add_save): Same. testsuite/ * gfortran.dg/dup_save_1.f90: New test. * gfortran.dg/dup_save_2.f90: New test. From-SVN: r105850
This commit is contained in:
parent
aca2b8da20
commit
09e87839d4
|
@ -1,3 +1,9 @@
|
||||||
|
2005-10-24 Asher Langton <langton2@llnl.gov>
|
||||||
|
|
||||||
|
* decl.c (gfc_match_save): Changed duplicate SAVE errors to
|
||||||
|
warnings in the absence of strict standard conformance
|
||||||
|
* symbol.c (gfc_add_save): Same.
|
||||||
|
|
||||||
2005-10-24 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
2005-10-24 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||||
|
|
||||||
PR fortran/15586
|
PR fortran/15586
|
||||||
|
|
|
@ -3271,10 +3271,11 @@ gfc_match_save (void)
|
||||||
{
|
{
|
||||||
if (gfc_current_ns->seen_save)
|
if (gfc_current_ns->seen_save)
|
||||||
{
|
{
|
||||||
gfc_error ("Blanket SAVE statement at %C follows previous "
|
if (gfc_notify_std (GFC_STD_LEGACY,
|
||||||
"SAVE statement");
|
"Blanket SAVE statement at %C follows previous "
|
||||||
|
"SAVE statement")
|
||||||
return MATCH_ERROR;
|
== FAILURE)
|
||||||
|
return MATCH_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
gfc_current_ns->save_all = gfc_current_ns->seen_save = 1;
|
gfc_current_ns->save_all = gfc_current_ns->seen_save = 1;
|
||||||
|
@ -3283,8 +3284,10 @@ gfc_match_save (void)
|
||||||
|
|
||||||
if (gfc_current_ns->save_all)
|
if (gfc_current_ns->save_all)
|
||||||
{
|
{
|
||||||
gfc_error ("SAVE statement at %C follows blanket SAVE statement");
|
if (gfc_notify_std (GFC_STD_LEGACY,
|
||||||
return MATCH_ERROR;
|
"SAVE statement at %C follows blanket SAVE statement")
|
||||||
|
== FAILURE)
|
||||||
|
return MATCH_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
gfc_match (" ::");
|
gfc_match (" ::");
|
||||||
|
|
|
@ -681,8 +681,11 @@ gfc_add_save (symbol_attribute * attr, const char *name, locus * where)
|
||||||
|
|
||||||
if (attr->save)
|
if (attr->save)
|
||||||
{
|
{
|
||||||
duplicate_attr ("SAVE", where);
|
if (gfc_notify_std (GFC_STD_LEGACY,
|
||||||
return FAILURE;
|
"Duplicate SAVE attribute specified at %L",
|
||||||
|
where)
|
||||||
|
== FAILURE)
|
||||||
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
attr->save = 1;
|
attr->save = 1;
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2005-10-24 Asher Langton <langton2@llnl.gov>
|
||||||
|
|
||||||
|
* gfortran.dg/dup_save_1.f90: New test.
|
||||||
|
* gfortran.dg/dup_save_2.f90: New test.
|
||||||
|
|
||||||
2005-10-24 Paul Brook <paul@codesourcery.com>
|
2005-10-24 Paul Brook <paul@codesourcery.com>
|
||||||
|
|
||||||
PR 24107
|
PR 24107
|
||||||
|
@ -6,8 +11,8 @@
|
||||||
|
|
||||||
2005-10-23 Jerry DeLisle <jvdelisle@verizon.net>
|
2005-10-23 Jerry DeLisle <jvdelisle@verizon.net>
|
||||||
|
|
||||||
PR libgfortran/24489
|
PR libgfortran/24489
|
||||||
* gfortran.dg/pr24489.f90: New test.
|
* gfortran.dg/pr24489.f90: New test.
|
||||||
|
|
||||||
2005-10-23 Andrew Pinski <pinskia@physics.uc.edu>
|
2005-10-23 Andrew Pinski <pinskia@physics.uc.edu>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
! { dg-do run }
|
||||||
|
program save_1
|
||||||
|
implicit none
|
||||||
|
integer i
|
||||||
|
integer foo1, foo2, foo3, foo4
|
||||||
|
do i=1,10
|
||||||
|
if (foo1().ne.i) then
|
||||||
|
call abort
|
||||||
|
end if
|
||||||
|
if (foo2().ne.i) then
|
||||||
|
call abort
|
||||||
|
end if
|
||||||
|
if (foo3().ne.i) then
|
||||||
|
call abort
|
||||||
|
end if
|
||||||
|
if (foo4().ne.i) then
|
||||||
|
call abort
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
end program save_1
|
||||||
|
|
||||||
|
integer function foo1
|
||||||
|
integer j
|
||||||
|
save
|
||||||
|
save ! { dg-warning "Blanket SAVE" }
|
||||||
|
data j /0/
|
||||||
|
j = j + 1
|
||||||
|
foo1 = j
|
||||||
|
end function foo1
|
||||||
|
|
||||||
|
integer function foo2
|
||||||
|
integer j
|
||||||
|
save j
|
||||||
|
save j ! { dg-warning "Duplicate SAVE" }
|
||||||
|
data j /0/
|
||||||
|
j = j + 1
|
||||||
|
foo2 = j
|
||||||
|
end function foo2
|
||||||
|
|
||||||
|
integer function foo3
|
||||||
|
integer j ! { dg-warning "Duplicate SAVE" }
|
||||||
|
save
|
||||||
|
save j ! { dg-warning "SAVE statement" }
|
||||||
|
data j /0/
|
||||||
|
j = j + 1
|
||||||
|
foo3 = j
|
||||||
|
end function foo3
|
||||||
|
|
||||||
|
integer function foo4
|
||||||
|
integer j ! { dg-warning "Duplicate SAVE" }
|
||||||
|
save j
|
||||||
|
save
|
||||||
|
data j /0/
|
||||||
|
j = j + 1
|
||||||
|
foo4 = j
|
||||||
|
end function foo4
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
! { dg-do compile }
|
||||||
|
! { dg-options "-std=f95" }
|
||||||
|
program save_2
|
||||||
|
implicit none
|
||||||
|
integer i
|
||||||
|
integer foo1, foo2, foo3, foo4
|
||||||
|
do i=1,10
|
||||||
|
if (foo1().ne.i) then
|
||||||
|
call abort
|
||||||
|
end if
|
||||||
|
if (foo2().ne.i) then
|
||||||
|
call abort
|
||||||
|
end if
|
||||||
|
if (foo3().ne.i) then
|
||||||
|
call abort
|
||||||
|
end if
|
||||||
|
if (foo4().ne.i) then
|
||||||
|
call abort
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
end program save_2
|
||||||
|
|
||||||
|
integer function foo1
|
||||||
|
integer j
|
||||||
|
save
|
||||||
|
save ! { dg-error "Blanket SAVE" }
|
||||||
|
data j /0/
|
||||||
|
j = j + 1
|
||||||
|
foo1 = j
|
||||||
|
end function foo1
|
||||||
|
|
||||||
|
integer function foo2
|
||||||
|
integer j
|
||||||
|
save j
|
||||||
|
save j ! { dg-error "Duplicate SAVE" }
|
||||||
|
data j /0/
|
||||||
|
j = j + 1
|
||||||
|
foo2 = j
|
||||||
|
end function foo2
|
||||||
|
|
||||||
|
integer function foo3
|
||||||
|
integer j
|
||||||
|
save
|
||||||
|
save j ! { dg-error "SAVE statement" }
|
||||||
|
data j /0/
|
||||||
|
j = j + 1
|
||||||
|
foo3 = j
|
||||||
|
end function foo3
|
||||||
|
|
||||||
|
integer function foo4
|
||||||
|
integer j ! { dg-error "Duplicate SAVE" }
|
||||||
|
save j
|
||||||
|
save
|
||||||
|
data j /0/
|
||||||
|
j = j + 1
|
||||||
|
foo4 = j
|
||||||
|
end function foo4
|
Loading…
Reference in New Issue