diff options
author | Janne Blomqvist <jblomqvi@cc.hut.fi> | 2004-06-22 03:43:55 +0300 |
---|---|---|
committer | Paul Brook <pbrook@gcc.gnu.org> | 2004-06-22 00:43:55 +0000 |
commit | 8750f9cdec153095cc47c41b887bc86fda4a0e3e (patch) | |
tree | ceecaee98023a95b8e6865056ce0fa2cc4afb927 /gcc/fortran/io.c | |
parent | 88c499cce7487e1d4b40e8c7d568db22ba59d90e (diff) | |
download | gcc-8750f9cdec153095cc47c41b887bc86fda4a0e3e.zip gcc-8750f9cdec153095cc47c41b887bc86fda4a0e3e.tar.gz gcc-8750f9cdec153095cc47c41b887bc86fda4a0e3e.tar.bz2 |
re PR fortran/15750 (IOLENGTH form of INQUIRE statement not implemented)
PR fortran/15750
* io.c (gfc_match_inquire): Bugfix for iolength related stuff.
(gfc_resolve_inquire): Resolve the iolength tag. Return
SUCCESS at end of function if no failure has occured.
* resolve.c (resolve_code): Resolve if iolength is encountered.
* trans-io.c: (ioparm_iolength, iocall_iolength,
iocall_iolength_done): New variables.
(last_dt): Add IOLENGTH.
(gfc_build_io_library_fndecls ): Set iolength related variables.
(gfc_trans_iolength): Implement.
(gfc_trans_dt_end): Treat iolength as a third form of data transfer.
libgfortran/
PR fortran/15750
* inquire.c (st_inquire): Add comment
* io.h (st_parameter): Add iolength.
(st_iolength, st_iolength_done): Declare.
* transfer.c (iolength_transfer, iolength_transfer_init,
st_iolength, st_iolength_done): New functions.
testsuite/
* gfortran.fortran-torture/execute/iolength_1.f90: New test.
* gfortran.fortran-torture/execute/iolength_3.f90: New test.
From-SVN: r83472
Diffstat (limited to 'gcc/fortran/io.c')
-rw-r--r-- | gcc/fortran/io.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index 56cbe87..ee52c69 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -2353,7 +2353,7 @@ gfc_match_inquire (void) new_st.op = EXEC_IOLENGTH; new_st.expr = inquire->iolength; - gfc_free (inquire); + new_st.ext.inquire = inquire; if (gfc_pure (NULL)) { @@ -2439,9 +2439,10 @@ gfc_resolve_inquire (gfc_inquire * inquire) RESOLVE_TAG (&tag_readwrite, inquire->readwrite); RESOLVE_TAG (&tag_s_delim, inquire->delim); RESOLVE_TAG (&tag_s_pad, inquire->pad); + RESOLVE_TAG (&tag_iolength, inquire->iolength); if (gfc_reference_st_label (inquire->err, ST_LABEL_TARGET) == FAILURE) return FAILURE; - return FAILURE; + return SUCCESS; } |