aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorJanne Blomqvist <jblomqvi@cc.hut.fi>2004-06-22 03:43:55 +0300
committerPaul Brook <pbrook@gcc.gnu.org>2004-06-22 00:43:55 +0000
commit8750f9cdec153095cc47c41b887bc86fda4a0e3e (patch)
treeceecaee98023a95b8e6865056ce0fa2cc4afb927 /gcc/fortran/resolve.c
parent88c499cce7487e1d4b40e8c7d568db22ba59d90e (diff)
downloadgcc-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/resolve.c')
-rw-r--r--gcc/fortran/resolve.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 77ac3d4..03851f5 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -3452,7 +3452,6 @@ resolve_code (gfc_code * code, gfc_namespace * ns)
{
case EXEC_NOP:
case EXEC_CYCLE:
- case EXEC_IOLENGTH:
case EXEC_PAUSE:
case EXEC_STOP:
case EXEC_EXIT:
@@ -3620,6 +3619,14 @@ resolve_code (gfc_code * code, gfc_namespace * ns)
case EXEC_INQUIRE:
if (gfc_resolve_inquire (code->ext.inquire) == FAILURE)
+ break;
+
+ resolve_branch (code->ext.inquire->err, code);
+ break;
+
+ case EXEC_IOLENGTH:
+ assert(code->ext.inquire != NULL);
+ if (gfc_resolve_inquire (code->ext.inquire) == FAILURE)
break;
resolve_branch (code->ext.inquire->err, code);