[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