diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 15f828df60a..7ab798d21e6 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 * 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 1ac48d4b2fd..756ae064e3b 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 9f7e3789cd6..95242b6396b 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,4 +1,10 @@ -2004-01-22 Bud Davis +2005-01-22 Tobias Schl"uter + + 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 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 +2005-01-16 Bud Davis 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 862a0b3ca89..2975f9e73ad 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; + GFC_INTEGER_4 *iostat, *exist, *opened, *number, *named; + GFC_INTEGER_4 rec; + GFC_INTEGER_4 *nextrec, *size; - int recl_in; - int *recl_out; + GFC_INTEGER_4 recl_in; + GFC_INTEGER_4 *recl_out; - int *iolength; + GFC_INTEGER_4 *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; +#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;