$ cat write_formatted_stream.f90 
program main
  implicit none
  integer :: i

  open(2003,form="formatted",access="stream")
  do i=1,100
    write (2003,'(A)') 'a'
  end do
end program main
$ gfortran write_formatted_stream.f90 
$ strace -e write,read,_llseek ./a.out
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\311\0"..., 512) = 512
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`4\0\000"..., 512) =
512
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\30"..., 512) = 512
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260a\1"..., 512) = 512
_llseek(0, 0, 0xbfd03200, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
_llseek(1, 0, 0xbfd031f0, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
_llseek(2, 0, 0xbfd031f0, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
_llseek(3, 0, [0], SEEK_CUR)            = 0
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
write(3, "a\n", 2)                      = 2
Process 4205 detached


-- 
           Summary: access="stream",form="formatted" doesn't buffer
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: libfortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: tkoenig at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34328

Reply via email to