diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 83215bb1d6f..87db870009d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2009-04-05 Daniel Kraft + + PR fortran/38654 + * gfortran.dg/read_float_2.f03 + * gfortran.dg/read_float_3.f90 + 2009-04-05 Richard Guenther PR tree-optimization/39648 diff --git a/gcc/testsuite/gfortran.dg/read_float_2.f03 b/gcc/testsuite/gfortran.dg/read_float_2.f03 new file mode 100644 index 00000000000..29344bcb555 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_float_2.f03 @@ -0,0 +1,18 @@ +! { dg-do run } +! Contributed by Dominique Dhumieres + +character(15) :: str="+ .339 567+2" +real, parameter :: should_be = .339567e2 +real, parameter :: eps = 10 * epsilon (should_be) +real :: x, y + +read(str,'(BN,F15.6)') x +print *, x +read(str,'(G15.7)') y +print *, y + +if (abs (x - should_be) > eps .or. abs (y - should_be) > eps) then + call abort () +end if + +end diff --git a/gcc/testsuite/gfortran.dg/read_float_3.f90 b/gcc/testsuite/gfortran.dg/read_float_3.f90 new file mode 100644 index 00000000000..0fa2f5c4e7b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_float_3.f90 @@ -0,0 +1,21 @@ +! { dg-do run } +! Contributed by Dominique Dhumieres + +character(100) :: str1 = & + "123.00456.88 0.123E+01 +0.987+1 -0.2345+02 -0.6879E+2+0.7E+03 0.4E+03" +character(100), parameter :: should_be = & + "123.00456.88 0.123E+01 0.987E+01-0.2345E+02-0.6879E+02 0.7E+03 0.4E+03" +character(100) :: output +complex :: c1, c2, c3, c4 + +100 format ( 2F6.2, 2E10.3, 2E11.4, 2E8.1) +read (str1,100) c1, c2, c3, c4 +write (output, 100) c1, c2, c3, c4 + +print *, output +if (output /= should_be) then + print *, should_be + call abort () +end if + +end