diff options
author | fxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-05 23:04:07 +0000 |
---|---|---|
committer | fxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-05 23:04:07 +0000 |
commit | eee5a9ff84bb1c033d1233b1bbde73aca98df5cd (patch) | |
tree | e9d35e287442cd93c334d4c6bf6ce320e8aec522 | |
parent | fb90b44027e6b166e4bf10e760adaed588817843 (diff) | |
download | gcc-eee5a9ff84bb1c033d1233b1bbde73aca98df5cd.tar.gz |
PR libfortran/24685
* io/write.c (write_real): Widen the default format for real(10)
variables output.
* gfortran.dg/large_real_kind_form_io_2.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110627 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 | 33 | ||||
-rw-r--r-- | libgfortran/ChangeLog | 6 | ||||
-rw-r--r-- | libgfortran/io/write.c | 4 |
4 files changed, 46 insertions, 2 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d21d5a778b7..34202b71043 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-02-06 Francois-Xavier Coudert <coudert@clipper.ens.fr> + + PR libfortran/24685 + * gfortran.dg/large_real_kind_form_io_2.f90: New test. + 2006-02-05 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/25251 diff --git a/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 b/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 new file mode 100644 index 00000000000..d48e3d57d48 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90 @@ -0,0 +1,33 @@ +! { dg-do run } +! { dg-require-effective-target fortran_large_real } +! PR libfortran/24685 +program large_real_kind_form_io_2 + ! This should be 10 or 16 on systems that support kind=10 or kind=16 + integer, parameter :: k = selected_real_kind (precision (0.0_8) + 1) + real(kind=k) :: a,b(2), c + character(len=180) :: tmp + + b(:) = huge(0.0_k) + write (tmp, *) b + read (tmp, *) a, c + if (a /= b(1)) call abort () + if (c /= b(2)) call abort () + + b(:) = -huge(0.0_k) + write (tmp, *) b + read (tmp, *) a, c + if (a /= b(1)) call abort () + if (c /= b(2)) call abort () + + b(:) = tiny(0.0_k) + write (tmp, *) b + read (tmp, *) a, c + if (a /= b(1)) call abort () + if (c /= b(2)) call abort () + + b(:) = -tiny(0.0_k) + write (tmp, *) b + read (tmp, *) a, c + if (a /= b(1)) call abort () + if (c /= b(2)) call abort () +end program large_real_kind_form_io_2 diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 04d68f0b0c1..ef4db4f60be 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2006-02-06 Francois-Xavier Coudert <coudert@clipper.ens.fr> + + PR libfortran/24685 + * io/write.c (write_real): Widen the default format for real(10) + variables output. + 2006-01-24 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/25835 diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c index d6323f4a695..d7ce6c56807 100644 --- a/libgfortran/io/write.c +++ b/libgfortran/io/write.c @@ -1373,8 +1373,8 @@ write_real (st_parameter_dt *dtp, const char *source, int length) f.u.real.e = 3; break; case 10: - f.u.real.w = 24; - f.u.real.d = 15; + f.u.real.w = 28; + f.u.real.d = 19; f.u.real.e = 4; break; case 16: |