]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libfortran/53051 (I/O: Support reading floating-point numbers which use "Q...
authorTobias Burnus <burnus@net-b.de>
Sun, 22 Apr 2012 17:28:34 +0000 (19:28 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Sun, 22 Apr 2012 17:28:34 +0000 (19:28 +0200)
2012-04-22  Tobias Burnus  <burnus@net-b.de>

        PR fortran/53051
        * io/list_read.c (parse_real): Support "q" for the
        exponential.
        * io/read.c (read_f): Ditto.

2012-04-22  Tobias Burnus  <burnus@net-b.de>

        PR fortran/53051
        * gfortran.dg/read_float_4.f90: New.

From-SVN: r186675

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/read_float_4.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/io/list_read.c
libgfortran/io/read.c

index 5f4f4b62dc633b53186ff656d092c1a32d9e2d6c..d2877e72304b8f4bab287b5b315320c3646ebbea 100644 (file)
@@ -1,3 +1,8 @@
+2012-04-22  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/53051
+       * gfortran.dg/read_float_4.f90: New.
+
 2012-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
        PR 35441
diff --git a/gcc/testsuite/gfortran.dg/read_float_4.f90 b/gcc/testsuite/gfortran.dg/read_float_4.f90
new file mode 100644 (file)
index 0000000..01a0de8
--- /dev/null
@@ -0,0 +1,18 @@
+! { dg-do run }
+!
+! PR libgfortran/53051
+!
+! Check that reading "4.0q0" works, i.e. floating-point
+! numbers which use "q" to indicate the exponential.
+! (Which is a vendor extension.)
+!
+      character(len=20) :: str
+      real :: r
+      integer :: i
+
+      r = 0
+      str = '1.0q0'
+      read(str, *, iostat=i) r
+      if (r /= 1.0 .or. i /= 0) call abort()
+      !print *, r
+      end
index 7f1a082a26483fe8fce7f4f0a144575d57caf21d..ec662841ee28be214941f2ba29095610196f59d9 100644 (file)
@@ -1,3 +1,10 @@
+2012-04-22  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/53051
+       * io/list_read.c (parse_real): Support "q" for the
+       exponential.
+       * io/read.c (read_f): Ditto.
+
 2012-04-17  Tobias Burnus  <burnus@net-b.de>
 
        PR libfortran/38199
index 2024fcd9b6cf8fc6d331e90e931395303565840f..4d2ce79412014a231cc8fe2fc190d2acead8e3dc 100644 (file)
@@ -1136,6 +1136,8 @@ parse_real (st_parameter_dt *dtp, void *buffer, int length)
        case 'E':
        case 'd':
        case 'D':
+       case 'q':
+       case 'Q':
          push_char (dtp, 'e');
          goto exp1;
 
@@ -1449,6 +1451,8 @@ read_real (st_parameter_dt *dtp, void * dest, int length)
        case 'e':
        case 'D':
        case 'd':
+       case 'Q':
+       case 'q':
          goto exp1;
 
        case '+':
@@ -1546,6 +1550,8 @@ read_real (st_parameter_dt *dtp, void * dest, int length)
        case 'e':
        case 'D':
        case 'd':
+       case 'Q':
+       case 'q':
          goto exp1;
 
        case '+':
index aa41bc7b9d288d4884acc14a69f0f0492e28b4d0..32c8b3250f8efc7d7a377ca1e263cec606166c70 100644 (file)
@@ -1026,6 +1026,8 @@ found_digit:
        case 'E':
        case 'd':
        case 'D':
+       case 'q':
+       case 'Q':
          ++p;
          --w;
          goto exponent;