diff options
author | Tobias Schlüter <tobi@gcc.gnu.org> | 2005-01-22 15:37:39 +0100 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2005-01-22 15:37:39 +0100 |
commit | b8d5e92646dd8d2a4ea41770e734a29cfcbc1ea3 (patch) | |
tree | 213701c7170a3a19c90af8648fcb0f1d38a0f386 | |
parent | 1e052c19d550ec0489c1bb2d2b4d94ee739641af (diff) | |
download | gcc-b8d5e92646dd8d2a4ea41770e734a29cfcbc1ea3.zip gcc-b8d5e92646dd8d2a4ea41770e734a29cfcbc1ea3.tar.gz gcc-b8d5e92646dd8d2a4ea41770e734a29cfcbc1ea3.tar.bz2 |
re PR fortran/19194 (Missing RECL parameter in OPEN statement)
gcc/fortran/
PR fortran/19194
* trans-io.c (ADD_STRING): Use gfc_charlen_type_node for string
length parameters.
(gfc_build_io_library_fndecls): 'rec' and 'recl_in' are not
pointer fields.
libgfortran/
PR fortran/19194
* io/io.h (st_parameter): Use 'GFC_INTEGER_4' instead of 'int',
use CHARACTER macro for definition of string valued paramters.
Also fix years in recent ChangeLog entries.
From-SVN: r94065
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-io.c | 6 | ||||
-rw-r--r-- | libgfortran/ChangeLog | 10 | ||||
-rw-r--r-- | libgfortran/io/io.h | 92 |
4 files changed, 56 insertions, 58 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 15f828d..7ab798d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -4,6 +4,12 @@ * trans-const.c (gfc_conv_constant_to_tree): Give logical constants the correct type. + PR fortran/19194 + * trans-io.c (ADD_STRING): Use gfc_charlen_type_node for string + length parameters. + (gfc_build_io_library_fndecls): 'rec' and 'recl_in' are not + pointer fields. + 2005-01-18 Kazu Hirata <kazu@cs.umass.edu> * arith.c, array.c, check.c, decl.c, expr.c, f95-lang.c, diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index 1ac48d4..756ae06 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -147,7 +147,7 @@ static enum { READ, WRITE, IOLENGTH } last_dt; get_identifier (stringize(name)), pchar_type_node); \ ioparm_ ## name ## _len = gfc_add_field_to_struct \ (&(TYPE_FIELDS (ioparm_type)), ioparm_type, \ - get_identifier (stringize(name) "_len"), gfc_int4_type_node) + get_identifier (stringize(name) "_len"), gfc_charlen_type_node) /* Create function decls for IO library functions. */ @@ -181,11 +181,11 @@ gfc_build_io_library_fndecls (void) ADD_FIELD (opened, gfc_pint4_type_node); ADD_FIELD (number, gfc_pint4_type_node); ADD_FIELD (named, gfc_pint4_type_node); - ADD_FIELD (rec, gfc_pint4_type_node); + ADD_FIELD (rec, gfc_int4_type_node); ADD_FIELD (nextrec, gfc_pint4_type_node); ADD_FIELD (size, gfc_pint4_type_node); - ADD_FIELD (recl_in, gfc_pint4_type_node); + ADD_FIELD (recl_in, gfc_int4_type_node); ADD_FIELD (recl_out, gfc_pint4_type_node); ADD_FIELD (iolength, gfc_pint4_type_node); diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 9f7e378..95242b6 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,4 +1,10 @@ -2004-01-22 Bud Davis <bdavis9659@comcast.net> +2005-01-22 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/19194 + * io/io.h (st_parameter): Use 'GFC_INTEGER_4' instead of 'int', + use CHARACTER macro for definition of string valued paramters. + +2005-01-22 Bud Davis <bdavis9659@comcast.net> PR fortran/19314 * io/inquire.c(inquire_via_unit): implement POSITION=. @@ -7,7 +13,7 @@ * io/rewind.c(st_rewind): update position for INQUIRE. -2004-01-16 Bud Davis <bdavis9659@comcast.net> +2005-01-16 Bud Davis <bdavis9659@comcast.net> PR fortran/18778 * io/transfer.c (us_read): no bytes available is not a diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h index 862a0b3..2975f9e 100644 --- a/libgfortran/io/io.h +++ b/libgfortran/io/io.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of the GNU Fortran 95 runtime library (libgfortran). @@ -165,8 +165,8 @@ unit_mode; typedef struct { - int unit; - int err, end, eor, list_format; /* These are flags, not values. */ + GFC_INTEGER_4 unit; + GFC_INTEGER_4 err, end, eor, list_format; /* These are flags, not values. */ /* Return values from library statements. These are returned only if the labels are specified in the statement itself and the condition @@ -183,58 +183,44 @@ typedef struct } library_return; - int *iostat, *exist, *opened, *number, *named, rec, *nextrec, *size; - - int recl_in; - int *recl_out; - - int *iolength; - - char *file; - int file_len; - char *status; - int status_len; - char *access; - int access_len; - char *form; - int form_len; - char *blank; - int blank_len; - char *position; - int position_len; - char *action; - int action_len; - char *delim; - int delim_len; - char *pad; - int pad_len; - char *format; - int format_len; - char *advance; - int advance_len; - char *name; - int name_len; - char *internal_unit; - int internal_unit_len; - char *sequential; - int sequential_len; - char *direct; - int direct_len; - char *formatted; - int formatted_len; - char *unformatted; - int unformatted_len; - char *read; - int read_len; - char *write; - int write_len; - char *readwrite; - int readwrite_len; + GFC_INTEGER_4 *iostat, *exist, *opened, *number, *named; + GFC_INTEGER_4 rec; + GFC_INTEGER_4 *nextrec, *size; + + GFC_INTEGER_4 recl_in; + GFC_INTEGER_4 *recl_out; + + GFC_INTEGER_4 *iolength; + +#define CHARACTER(name) \ + char * name; \ + gfc_charlen_type name ## _len + CHARACTER (file); + CHARACTER (status); + CHARACTER (access); + CHARACTER (form); + CHARACTER (blank); + CHARACTER (position); + CHARACTER (action); + CHARACTER (delim); + CHARACTER (pad); + CHARACTER (format); + CHARACTER (advance); + CHARACTER (name); + CHARACTER (internal_unit); + CHARACTER (sequential); + CHARACTER (direct); + CHARACTER (formatted); + CHARACTER (unformatted); + CHARACTER (read); + CHARACTER (write); + CHARACTER (readwrite); /* namelist related data */ - char * namelist_name; - int namelist_name_len; - int namelist_read_mode; + CHARACTER (namelist_name); + GFC_INTEGER_4 namelist_read_mode; + +#undef CHARACTER } st_parameter; |