This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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 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

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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]