OSDN Git Service

gcc/fortran/
authortobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Jan 2005 14:37:39 +0000 (14:37 +0000)
committertobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Jan 2005 14:37:39 +0000 (14:37 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94065 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-io.c
libgfortran/ChangeLog
libgfortran/io/io.h

index 15f828d..7ab798d 100644 (file)
@@ -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,
index 1ac48d4..756ae06 100644 (file)
@@ -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);
index 9f7e378..95242b6 100644 (file)
@@ -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
index 862a0b3..2975f9e 100644 (file)
@@ -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;