PR 44292 Enable large record lengths in OPEN and INQUIRE statements
authorJanne Blomqvist <jb@gcc.gnu.org>
Sat, 18 Nov 2017 16:13:20 +0000 (18:13 +0200)
committerJanne Blomqvist <jb@gcc.gnu.org>
Sat, 18 Nov 2017 16:13:20 +0000 (18:13 +0200)
This is a straightforward change that we can do now that the ABI has
been bumped (again!).

Regtested on x86_64-pc-linux-gnu.

gcc/fortran/ChangeLog:

2017-11-18  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/44292
* ioparm.def (IOPARM): Make recl_in intio, and recl_out pintio.

libgfortran/ChangeLog:

2017-11-18  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/44292
* io/io.h: Make recl_in a GC_IO_INT and recl_out a type
GFC_IO_INT*.

gcc/testsuite/ChangeLog:

2017-11-18  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/44292
* gfortran.dg/large_recl.f90: New test.

From-SVN: r254915

gcc/fortran/ChangeLog
gcc/fortran/ioparm.def
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/large_recl.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/io/io.h

index 8be5518..4334901 100644 (file)
@@ -1,3 +1,8 @@
+2017-11-18  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       PR fortran/44292
+       * ioparm.def (IOPARM): Make recl_in intio, and recl_out pintio.
+
 2017-11-18  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/83012
index ca5631b..5fc04bc 100644 (file)
@@ -34,7 +34,7 @@ IOPARM (common,  line,                0,       int4)
 IOPARM (common,  iomsg,                1 << 6,  char2)
 IOPARM (common,  iostat,       1 << 5,  pint4)
 IOPARM (open,    common,       0,       common)
-IOPARM (open,    recl_in,      1 << 7,  int4)
+IOPARM (open,    recl_in,      1 << 7,  intio)
 IOPARM (open,    file,         1 << 8,  char2)
 IOPARM (open,    status,       1 << 9,  char1)
 IOPARM (open,    access,       1 << 10, char2)
@@ -63,7 +63,7 @@ IOPARM (inquire, opened,      1 << 8,  pint4)
 IOPARM (inquire, number,       1 << 9,  pint4)
 IOPARM (inquire, named,                1 << 10, pint4)
 IOPARM (inquire, nextrec,      1 << 11, pint4)
-IOPARM (inquire, recl_out,     1 << 12, pint4)
+IOPARM (inquire, recl_out,     1 << 12, pintio)
 IOPARM (inquire, strm_pos_out, 1 << 13, pintio)
 IOPARM (inquire, file,         1 << 14, char1)
 IOPARM (inquire, access,       1 << 15, char2)
index dabd308..25cb660 100644 (file)
@@ -1,3 +1,8 @@
+2017-11-18  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       PR fortran/44292
+       * gfortran.dg/large_recl.f90: New test.
+
 2017-11-18  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/83012
diff --git a/gcc/testsuite/gfortran.dg/large_recl.f90 b/gcc/testsuite/gfortran.dg/large_recl.f90
new file mode 100644 (file)
index 0000000..97ac63f
--- /dev/null
@@ -0,0 +1,12 @@
+! { dg-do run }
+! PR 44292 Large RECL=
+program large_recl
+  implicit none
+  integer(kind=8) :: r
+  open(10, status="scratch", recl=12345678901_8, form="unformatted", access="direct")
+  inquire(10, recl=r)
+  close(10, status="delete")
+  if (r /= 12345678901_8) then
+     call abort()
+  end if
+end program large_recl
index a486eed..fa5646b 100644 (file)
@@ -1,3 +1,9 @@
+2017-11-18  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       PR fortran/44292
+       * io/io.h: Make recl_in a GC_IO_INT and recl_out a type
+       GFC_IO_INT*.
+
 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
 
        * acinclude.m4: Add enable.m4, cet.m4.
@@ -12,7 +18,7 @@
        PR libgfortran/81938
        io/format.c (free_format_data): Don't try to free vlist
        descriptors past the end of the fnode array.
-       
+
 2017-10-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR libfortran/82233
index df49157..3330bce 100644 (file)
@@ -308,7 +308,7 @@ unit_sign_s;
 typedef struct
 {
   st_parameter_common common;
-  GFC_INTEGER_4 recl_in;
+  GFC_IO_INT recl_in;
   CHARACTER2 (file);
   CHARACTER1 (status);
   CHARACTER2 (access);
@@ -388,8 +388,8 @@ typedef struct
 {
   st_parameter_common common;
   GFC_INTEGER_4 *exist, *opened, *number, *named;
-  GFC_INTEGER_4 *nextrec, *recl_out;
-  GFC_IO_INT *strm_pos_out;
+  GFC_INTEGER_4 *nextrec;
+  GFC_IO_INT  *recl_out, *strm_pos_out;
   CHARACTER1 (file);
   CHARACTER2 (access);
   CHARACTER1 (form);