diff options
author | Francois-Xavier Coudert <coudert@clipper.ens.fr> | 2005-05-09 13:21:01 +0200 |
---|---|---|
committer | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2005-05-09 11:21:01 +0000 |
commit | 4581ba9d4f3767e4b0dea0bc101b0e865cfcd85d (patch) | |
tree | 7986eb5beb061270c1c86ffeaa510692657c6378 | |
parent | 4bbcb8fcd4e2627b062cb46083da89f919ae799e (diff) | |
download | gcc-4581ba9d4f3767e4b0dea0bc101b0e865cfcd85d.zip gcc-4581ba9d4f3767e4b0dea0bc101b0e865cfcd85d.tar.gz gcc-4581ba9d4f3767e4b0dea0bc101b0e865cfcd85d.tar.bz2 |
re PR libfortran/19155 ([4.0 only] blanks not treated as zeros in 'E' format read (NIST FM110.FOR))
PR libfortran/19155
* io/read.c (read_f): Accept 'e', 'E', 'd' and 'D' as first
non-blank characters of a real number.
* gfortran.dg/pr19155.f: New test.
From-SVN: r99424
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr19155.f | 15 | ||||
-rw-r--r-- | libgfortran/ChangeLog | 6 | ||||
-rw-r--r-- | libgfortran/io/unix.c | 15 |
4 files changed, 35 insertions, 6 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 48d9936..b83ef7c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-05-09 Francois-Xavier Coudert <coudert@clipper.ens.fr> + + PR libfortran/19155 + * gfortran.dg/pr19155.f: New test. + 2005-05-08 Roger Sayle <roger@eyesopen.com> PR inline-asm/8788 diff --git a/gcc/testsuite/gfortran.dg/pr19155.f b/gcc/testsuite/gfortran.dg/pr19155.f new file mode 100644 index 0000000..ccd3915 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr19155.f @@ -0,0 +1,15 @@ +! { dg-do run } +! +! PR libfortran/19155 +! We accept 'E+00' as a valid real number. The standard says it is not, +! but doesn't require us to issue an error. Since g77 accepts this as zero, +! we do the same. + real a + a = 42 + open (19,status='scratch') + write (19,'(A15)') 'E+00' + rewind (19) + read (19,'(E15.8)') a + if (a .ne. 0) call abort + close (19) + end diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 3e0b361..c91b98c 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2005-05-09 Francois-Xavier Coudert <coudert@clipper.ens.fr> + + PR libfortran/19155 + * io/read.c (read_f): Accept 'e', 'E', 'd' and 'D' as first + non-blank characters of a real number. + 2005-05-04 Thomas Koenig <Thomas.Koenig@online.de> PR libfortran/21354 diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c index 78ed0f7..865eb68 100644 --- a/libgfortran/io/unix.c +++ b/libgfortran/io/unix.c @@ -892,7 +892,7 @@ open_internal (char *base, int length) * around it. */ static stream * -fd_to_stream (int fd, int prot) +fd_to_stream (int fd, int prot, int avoid_mmap) { struct stat statbuf; unix_stream *s; @@ -911,7 +911,10 @@ fd_to_stream (int fd, int prot) s->file_length = S_ISREG (statbuf.st_mode) ? statbuf.st_size : -1; #if HAVE_MMAP - mmap_open (s); + if (avoid_mmap) + fd_open (s); + else + mmap_open (s); #else fd_open (s); #endif @@ -1153,7 +1156,7 @@ open_external (unit_flags *flags) internal_error ("open_external(): Bad action"); } - return fd_to_stream (fd, prot); + return fd_to_stream (fd, prot, 0); } @@ -1163,7 +1166,7 @@ open_external (unit_flags *flags) stream * input_stream (void) { - return fd_to_stream (STDIN_FILENO, PROT_READ); + return fd_to_stream (STDIN_FILENO, PROT_READ, 1); } @@ -1173,7 +1176,7 @@ input_stream (void) stream * output_stream (void) { - return fd_to_stream (STDOUT_FILENO, PROT_WRITE); + return fd_to_stream (STDOUT_FILENO, PROT_WRITE, 1); } @@ -1183,7 +1186,7 @@ output_stream (void) stream * error_stream (void) { - return fd_to_stream (STDERR_FILENO, PROT_WRITE); + return fd_to_stream (STDERR_FILENO, PROT_WRITE, 1); } /* init_error_stream()-- Return a pointer to the error stream. This |