On Sat, Oct 29, 2011 at 01:48, Mikael Morin <mikael.mo...@sfr.fr> wrote: > On Tuesday 18 October 2011 17:11:24 Janne Blomqvist wrote: >> Also, I think I've found a small standards conformance bug. From F2008 >> (N1830) 9.10.2.23 (page 256): "... ASIS if the connection was opened >> without changing its position." and "If the file has been repositioned >> since the connection, the scalar-default-char-variable >> is assigned a processor-dependent value, which shall not be REWIND >> unless the file is positioned at its initial >> point and shall not be APPEND unless the file is positioned so that its >> endfile record is the next record or at its >> terminal point if it has no endfile record. >> " >> >> If my understanding of the above is correct, returning ASIS is >> incorrent unless the position is unchanged since the OPEN statement. >> Currently we return ASIS by default if it's neither REWIND nor APPEND. >> So the patch changes the implementation to return the >> processor-dependent value UNSPECIFIED in this case. >> > If my reading is correct, returning ASIS is as valid as returning UNSPECIFIED > ("processor-dependent"). I have a preference for UNSPECIFIED and see your > patch as OK, but shouldn't it be avoided if it breaks backwards compatibility?
My thinking was that the first sentence I quoted would prohibit ASIS even though it's not explicitly forbidden in the second quoted sentence. Fixing the implementation would thus be correcting a standards-conformance bug. FWIW, it seems ifort 12.0 uses "UNDEFINED" in this case; I suppose a case could be made for using the same. Comments? > I'm also afraid of testsuite changes of the following kind. > Was there no reason for the "-std=legacy"? > > diff --git a/gcc/testsuite/gfortran.dg/inquire_5.f90 > b/gcc/testsuite/gfortran.dg/inquire_5.f90 > index fe107a1..064f96d 100644 > --- a/gcc/testsuite/gfortran.dg/inquire_5.f90 > +++ b/gcc/testsuite/gfortran.dg/inquire_5.f90 > @@ -1,11 +1,10 @@ > ! { dg-do run { target fd_truncate } } > -! { dg-options "-std=legacy" } > ! I changed the declaration of "chr" from "character*20" to "character(len=20)" which made std=legacy unnecessary. As the testcase doesn't test any legacy functionality per se, I though this change would slightly simplify it. See also http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40881 which mass-added std=legacy to a number of testcases (including this one) as a result of some frontend warnings changes. Thanks for the reviews! -- Janne Blomqvist