OSDN Git Service

2014-04-12 Jerry DeLisle <jvdelisle@gcc.gnu>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 13 Apr 2014 02:05:02 +0000 (02:05 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 13 Apr 2014 02:05:02 +0000 (02:05 +0000)
Backport from mainline
PR libfortran/60810
gfortran.dg/arrayio_13.f90: New test.

PR libfortran/60810
io/unit.c (is_trim_ok): If internal unit is array, do not trim.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209345 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/arrayio_13.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/io/unit.c

index e8b525c..25cda77 100644 (file)
@@ -1,3 +1,9 @@
+2014-04-12  Jerry DeLisle  <jvdelisle@gcc.gnu>
+
+       Backport from mainline
+       PR libfortran/60810
+       gfortran.dg/arrayio_13.f90: New test.
+
 2014-04-07  Martin Jambor  <mjambor@suse.cz>
 
        PR ipa/60640
diff --git a/gcc/testsuite/gfortran.dg/arrayio_13.f90 b/gcc/testsuite/gfortran.dg/arrayio_13.f90
new file mode 100644 (file)
index 0000000..92a856b
--- /dev/null
@@ -0,0 +1,14 @@
+! { dg-do run }
+! PR60810 Bogus end-of-file
+program readstrlist
+  character(len=80), dimension(2) :: ver
+  integer :: a, b, c
+  a = 1
+  b = 2
+  c = 3
+  ver(1) = '285 383'
+  ver(2) = '985'
+  read( ver, *) a, b, c
+  if (a /= 285 .or. b /= 383 .or. c /= 985) call abort
+  !write ( *, *) a, b, c
+end
index 7d6fd05..dde1b58 100644 (file)
@@ -1,3 +1,9 @@
+2014-04-12  Jerry DeLisle  <jvdelisle@gcc.gnu>
+
+       Backport from mainline
+       PR libfortran/60810
+       io/unit.c (is_trim_ok): If internal unit is array, do not trim.
+
 2014-03-15  Jerry DeLisle  <jvdelisle@gcc.gnu>
 
        Backport from mainline
index d71593b..27ee051 100644 (file)
@@ -385,9 +385,7 @@ static bool
 is_trim_ok (st_parameter_dt *dtp)
 {
   /* Check rank and stride.  */
-  if (dtp->internal_unit_desc
-      && (GFC_DESCRIPTOR_RANK (dtp->internal_unit_desc) > 1
-         || GFC_DESCRIPTOR_STRIDE(dtp->internal_unit_desc, 0) != 1))
+  if (dtp->internal_unit_desc)
     return false;
   /* Format strings can not have 'BZ' or '/'.  */
   if (dtp->common.flags & IOPARM_DT_HAS_FORMAT)