+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>
PR fortran/15586
{
if (gfc_current_ns->seen_save)
{
- gfc_error ("Blanket SAVE statement at %C follows previous "
- "SAVE statement");
-
- return MATCH_ERROR;
+ if (gfc_notify_std (GFC_STD_LEGACY,
+ "Blanket SAVE statement at %C follows previous "
+ "SAVE statement")
+ == FAILURE)
+ return MATCH_ERROR;
}
gfc_current_ns->save_all = gfc_current_ns->seen_save = 1;
if (gfc_current_ns->save_all)
{
- gfc_error ("SAVE statement at %C follows blanket SAVE statement");
- return MATCH_ERROR;
+ if (gfc_notify_std (GFC_STD_LEGACY,
+ "SAVE statement at %C follows blanket SAVE statement")
+ == FAILURE)
+ return MATCH_ERROR;
}
gfc_match (" ::");
if (attr->save)
{
- duplicate_attr ("SAVE", where);
- return FAILURE;
+ if (gfc_notify_std (GFC_STD_LEGACY,
+ "Duplicate SAVE attribute specified at %L",
+ where)
+ == FAILURE)
+ return FAILURE;
}
attr->save = 1;
+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>
PR 24107
2005-10-23 Jerry DeLisle <jvdelisle@verizon.net>
- PR libgfortran/24489
- * gfortran.dg/pr24489.f90: New test.
+ PR libgfortran/24489
+ * gfortran.dg/pr24489.f90: New test.
2005-10-23 Andrew Pinski <pinskia@physics.uc.edu>
--- /dev/null
+! { 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
+
--- /dev/null
+! { 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