[Fwd: (j3.2006) Fortran 2003 compiler features]
Brooks Moses
brooks.moses@codesourcery.com
Wed Feb 7 09:24:00 GMT 2007
Dominique Dhumieres wrote:
> (e) This shows that the present regtest procedure does not
> cover everything even in the gcc testsuite (another example
> is empty files which are not detected). I remember a thread
> on this list about the interest of the "dg-do compile" to
> reduce the time required for regtesting. It could be intersting
> to reopen it. For the specific example, I see three possibilities:
> (i) do nothing,
> (ii) make it "dg-do run" and see the time out (8x300 time units(s?)
> probably 40 minutes more),
> (iii) (ii)+xfail on darwin.
FWIW, xfail doesn't prevent the test from being run; it just changes the
reporting of the output. So option (iii) still adds a significant
amount of time to the testsuite on darwin.
My feeling is that tests which are likely to have runtime failures
should be run. That certainly includes things which do recursive calls.
On the other hand, this particular testcase (intrinsic_actual_2.f90)
looks rather pathological, in general. To begin with, it's got
functions which don't define the value of their return variables, which
is nonstandard. It's also doing recursive I/O to an external unit,
which is not permitted even under F2003 except in the context of
user-defined derived-type I/O (c.f. 9.11 paragraph 3, and 9.5.3.7.1
paragraph 2.) IMO, the testcase should be fixed to remove at least the
nonstandard recursive I/O, and we really shouldn't have _any_ code in
the testsuite that isn't standard-conforming unless we have a good
reason that's documented in the testcase comments.
If the reason for the hanging is the recursive I/O, I frankly do not
think solving that bug is worth our time. It is invalid code, it will
stay invalid code in future versions of Fortran, and there are
undoubtably lots of cases where invalid code causes programs to hang.
Also, to go back to the original topic, this should not be considered as
a reason why we can't tick off the "recursive I/O" checkbox on Fortran
2003 features. Until we implement user-defined derived-type I/O, F2003
recursive I/O is limited to internal units, and this isn't that.
- Brooks
More information about the Fortran
mailing list