This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch, fortran]PR25829 Add support for F2003 I/O features
Jerry DeLisle wrote:
AFAICT we can avoid breaking ABI, All the async workings will occur in
unix.c and uses the revised unix_stream structure which is allocated at
run time. Similarly, we have changes in gfc_unit which are allocated at
run time, the dtp structure is changed. It adds decimal_status. If ABI
is critical, we can move that to gfc_unit or do it a little
differently.
IMHO ABI compatibility is critical. Having to recompile every single
piece of Fortran code in order to upgrade the compiler is a problem for
some people. Not to say that upgrading might be downright impossible if
they use some library delivered in binary form (e.g. ACML).
The C++ library has some ABI tests in
libstdc++-v3/testsuite/libstdc++-abi , perhaps libgfortran could do
something similar? Another option could be to run the 4.3 testsuite
using the libgfortran from 4.4 (maybe as easy as copying the 4.4
libgfortran into the directory where 4.3 is installed?).
We do add one new symbol to gfortran.map which we should
version, but otherwise no impact.
For 4.4 we should put new symbols into a new version node GFORTRAN_1.1
as documented at http://gcc.gnu.org/wiki/SymbolVersioning
The approach I am planning will hide asynchronous operations in unix.c.
The standard allows a lot of flexibility here, including ignoring the
requests and waiting for I/O to complete as we are now, or only doing it
when we want, for example, on large arrays only.
IIRC on Linux AIO requires that the file is opened with O_DIRECT, and
that all I/O is page size (typically 4 KB) aligned. The AIO syscalls do
work if these conditions are not met, but internally they fall back to a
normal synchronous I/O. I think there are some efforts to rectify this,
but I don't think they have been committed to the mainline kernel yet.
Just something to keep in mind when you want to benchmark the
implementation.
--
Janne Blomqvist