This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gfortran] patch for PR 14872 - Variables used for REC= in READ /WRITE always case run-time


Fixes PR 14872, passes NIST test FM407.FOR and FM413.FOR.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14872

REC=<> needs to be passes as a value, not as a reference.

Test to add:

! demonstrates basic direct access using variables for REC
! pr14872
       OPEN(UNIT=10,ACCESS='DIRECT',FORM='FORMATTED',RECL=128)
       DO I = 1,10
          WRITE(10,REC=I,FMT=100,ERR=10)I
 100      FORMAT(I4)
       ENDDO
       DO I = 1,10
          READ(10,REC=I,FMT=100,ERR=10)J
          IF (J.NE.I) THEN
            PRINT*,' READ ',J,' EXPECTED ',I
            CALL ABORT
          ENDIF
       ENDDO
       STOP
 10    CONTINUE
       PRINT*,' ERR= RETURN FROM READ OR WRITE'
       CALL ABORT
       END

below is the patch with ChangeLog. It is really only a one word change,
ref to value :)


 

--bud


Index: gcc/gcc/fortran/ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/gcc/fortran/Attic/ChangeLog,v
retrieving revision 1.1.2.131
diff -c -3 -p -r1.1.2.131 ChangeLog
*** gcc/gcc/fortran/ChangeLog   4 Apr 2004 23:27:49 -0000       1.1.2.131
--- gcc/gcc/fortran/ChangeLog   7 Apr 2004 13:21:53 -0000
***************
*** 1,3 ****
--- 1,8 ----
+ 2003-04-07  Bud Davis  <bdavis9659@comcast.net>
+
+       PR gfortran/14872
+       * trans-io.c (build_dt): Change REC to value.
+
  2003-04-05  Paul Brook  <paul@codesourcery.com>
   
        PR 13252
Index: gcc/gcc/fortran/trans-io.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/fortran/Attic/trans-io.c,v
retrieving revision 1.1.2.9
diff -c -3 -p -r1.1.2.9 trans-io.c
*** gcc/gcc/fortran/trans-io.c  4 Apr 2004 23:27:49 -0000       1.1.2.9
--- gcc/gcc/fortran/trans-io.c  7 Apr 2004 13:21:53 -0000
*************** build_dt (tree * function, gfc_code * co
*** 870,876 ****
      }
   
    if (dt->rec)
!     set_parameter_ref (&block, ioparm_rec, dt->rec);
   
    if (dt->advance)
      set_string (&block, &post_block, ioparm_advance, ioparm_advance_len,
--- 870,876 ----
      }
   
    if (dt->rec)
!     set_parameter_value (&block, ioparm_rec, dt->rec);
   
    if (dt->advance)
      set_string (&block, &post_block, ioparm_advance, ioparm_advance_len,
Index: gcc/gcc/testsuite/ChangeLog.tree-ssa
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/Attic/ChangeLog.tree-ssa,v
retrieving revision 1.1.2.214
diff -c -3 -p -r1.1.2.214 ChangeLog.tree-ssa
*** gcc/gcc/testsuite/ChangeLog.tree-ssa        4 Apr 2004 23:27:51 -0000       1.1.2.214
--- gcc/gcc/testsuite/ChangeLog.tree-ssa        7 Apr 2004 13:21:53 -0000
***************
*** 1,3 ****
--- 1,8 ----
+ 2004-04-07  Bud Davis  <bdavis9659@comcast.net>
+
+       PR gfortran/14872
+       * gfortran.fortran-torture/execute/direct_io.f90: New test.
+
  2003-04-04  Paul Brook  <paul@codesourcery.com>
   
        PR 13252






Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]