PING On Tue, May 27, 2014 at 11:50 PM, Janne Blomqvist <blomqvist.ja...@gmail.com> wrote: > Hi, > > the attached patch implements the idea in > https://gcc.gnu.org/ml/fortran/2013-04/msg00258.html ; though it > turned out it was much simpler than what I envisaged back then. With > this patch, we no longer seek back and forth when writing small > records with sequential unformatted, which previously happened due to > the buffer filling up when not on record boundaries. > Performance-wise, I didn't really see any difference on Linux/tmpfs, > but maybe it makes a difference in other circumstances. And of course, > as a side-effect, it makes sequential unformatted work on unseekable > devices such as pipes as long as the records are small, although I'm > not sure this is something we want to advertise to users. > > Regtested on x86_64-unknown-linux-gnu, Ok for trunk? > > 2014-05-27 Janne Blomqvist <j...@gcc.gnu.org> > > PR libfortran/56981 > * io/unix.h (struct stream_vtable): Add new member function, > markeor. > (smarkeor): New inline function. > (flush_if_unbuffered): Remove prototype. > * io/unix.c (raw_markeor): New function. > (raw_vtable): Initialize markeor member. > (buf_markeor): New function. > (buf_vtable): Initialize markeor member. > (mem_vtable): Likewise. > (mem4_vtable): Likewise. > (flush_if_unbuffered): Remove function. > * io/transfer.c (next_record): Call smarkeor instead of > flush_if_unbuffered. > > > -- > Janne Blomqvist
-- Janne Blomqvist