aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorJanne Blomqvist <jb@gcc.gnu.org>2005-11-06 20:28:22 +0200
committerJanne Blomqvist <jb@gcc.gnu.org>2005-11-06 20:28:22 +0200
commite5ef4b3bcbd6d8b166eeecab4581f196a3964697 (patch)
tree17962a230cf33b157872f3928504a867b0e6b656 /gcc/fortran
parentdb3d5328dd4d5a9945670a08ebe04b0ec9b4b16c (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/fortran/trans-io.c10
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);