re PR libfortran/38654 (Fortran I/O speedup)
authorDaniel Kraft <d@domob.eu>
Sun, 5 Apr 2009 20:23:21 +0000 (22:23 +0200)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Sun, 5 Apr 2009 20:23:21 +0000 (20:23 +0000)
2009-04-05  Daniel Kraft  <d@domob.eu>

PR fortran/38654
* gfortran.dg/read_float_2.f03
* gfortran.dg/read_float_3.f90

From-SVN: r145572

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/read_float_2.f03 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/read_float_3.f90 [new file with mode: 0644]

index 83215bb..87db870 100644 (file)
@@ -1,3 +1,9 @@
+2009-04-05  Daniel Kraft  <d@domob.eu>
+
+       PR fortran/38654
+       * gfortran.dg/read_float_2.f03
+       * gfortran.dg/read_float_3.f90
+
 2009-04-05  Richard Guenther  <rguenther@suse.de>
 
        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 (file)
index 0000000..29344bc
--- /dev/null
@@ -0,0 +1,18 @@
+! { dg-do run }
+! Contributed by Dominique Dhumieres <dominiq@lps.ens.fr>
+
+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 (file)
index 0000000..0fa2f5c
--- /dev/null
@@ -0,0 +1,21 @@
+! { dg-do run }
+! Contributed by Dominique Dhumieres <dominiq@lps.ens.fr>
+
+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