diff options
author | Janne Blomqvist <jb@gcc.gnu.org> | 2005-11-06 20:28:22 +0200 |
---|---|---|
committer | Janne Blomqvist <jb@gcc.gnu.org> | 2005-11-06 20:28:22 +0200 |
commit | e5ef4b3bcbd6d8b166eeecab4581f196a3964697 (patch) | |
tree | 17962a230cf33b157872f3928504a867b0e6b656 /gcc/fortran | |
parent | db3d5328dd4d5a9945670a08ebe04b0ec9b4b16c (diff) | |
download | gcc-e5ef4b3bcbd6d8b166eeecab4581f196a3964697.zip gcc-e5ef4b3bcbd6d8b166eeecab4581f196a3964697.tar.gz gcc-e5ef4b3bcbd6d8b166eeecab4581f196a3964697.tar.bz2 |
gfortran ChangeLog
2005-11-06 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/24174
PR fortran/24305
* fortran/trans-io.c (gfc_build_io_library_fndecls): Add kind
argument to transfer_array.
(transfer_array_desc): Add kind argument.
testsuite ChangeLog:
2005-11-06 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/24174
PR fortran/24305
* testsuite/gfortran.dg/large_real_kind_form_io_1.f90: New file.
libgfortran Changelog:
2005-11-06 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/24174
PR fortran/24305
* io/io.h: Add argument to prototypes, add prototypes for
size_from_*_kind functions.
* io/list_read.c (read_complex): Add size argument, use
it.
(list_formatted_read): Add size argument, cleanup.
(list_formatted_read_scalar): Add size argument.
(nml_read_obj): Fix for padding.
* io/transfer.c: Add argument to transfer function pointer.
(unformatted_read): Add size argument.
(unformatted_write): Likewise.
(formatted_transfer_scalar): Fix for padding with complex(10).
(formatted_transfer): Add size argument, cleanup.
(transfer_integer): Add size argument to transfer call.
(transfer_real): Likewise.
(transfer_logical): Likewise.
(transfer_character): Likewise.
(transfer_complex): Likewise.
(transfer_array): New kind argument, use it.
(data_transfer_init): Add size argument to formatted_transfer
call.
(iolength_transfer): Add size argument, cleanup.
* io/write.c (write_complex): Add size argument, fix for padding
with complex(10).
(list_formatted_write): Add size argument, cleanup.
(list_formatted_write_scalar): Add size argument, use it.
(nml_write_obj): Fix for size vs. kind issue.
* io/size_from_kind.c: New file.
* Makefile.am: Add io/size_from_kind.c.
* configure: Regenerate.
* Makefile.in: Regenerate.
From-SVN: r106563
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/trans-io.c | 10 |
2 files changed, 16 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 46e1c21..d7da455 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2005-11-06 Janne Blomqvist <jb@gcc.gnu.org> + + PR fortran/24174 + PR fortran/24305 + * fortran/trans-io.c (gfc_build_io_library_fndecls): Add kind + argument to transfer_array. + (transfer_array_desc): Add kind argument. + 2005-11-06 Francois-Xavier Coudert <coudert@clipper.ens.fr> * intrinsic.c (add_functions): Add ctime and fdate intrinsics. diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index 2c8a9cd..5eed8e8 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -159,10 +159,12 @@ gfc_build_io_library_fndecls (void) { tree gfc_int4_type_node; tree gfc_pint4_type_node; + tree gfc_c_int_type_node; tree ioparm_type; gfc_int4_type_node = gfc_get_int_type (4); gfc_pint4_type_node = build_pointer_type (gfc_int4_type_node); + gfc_c_int_type_node = gfc_get_int_type (gfc_c_int_kind); /* Build the st_parameter structure. Information associated with I/O calls are transferred here. This must match the one defined in the @@ -271,7 +273,8 @@ gfc_build_io_library_fndecls (void) iocall_x_array = gfc_build_library_function_decl (get_identifier (PREFIX("transfer_array")), - void_type_node, 2, pvoid_type_node, + void_type_node, 3, pvoid_type_node, + gfc_c_int_type_node, gfc_charlen_type_node); /* Library entry points */ @@ -1597,14 +1600,17 @@ transfer_expr (gfc_se * se, gfc_typespec * ts, tree addr_expr) static void transfer_array_desc (gfc_se * se, gfc_typespec * ts, tree addr_expr) { - tree args, tmp, charlen_arg; + tree args, tmp, charlen_arg, kind_arg; if (ts->type == BT_CHARACTER) charlen_arg = se->string_length; else charlen_arg = build_int_cstu (NULL_TREE, 0); + kind_arg = build_int_cst (NULL_TREE, ts->kind); + args = gfc_chainon_list (NULL_TREE, addr_expr); + args = gfc_chainon_list (args, kind_arg); args = gfc_chainon_list (args, charlen_arg); tmp = gfc_build_function_call (iocall_x_array, args); gfc_add_expr_to_block (&se->pre, tmp); |