aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-io.c
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2006-07-24 00:19:45 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2006-07-24 00:19:45 +0000
commit4fec64b07b9da385b80e89f86c603cb13c90c56c (patch)
treecafb4ddf881a103f1c23303872bd9960d3b3d653 /gcc/fortran/trans-io.c
parent566ffce8955401e87e86899239f5bb0a6a5b6b0f (diff)
downloadgcc-4fec64b07b9da385b80e89f86c603cb13c90c56c.zip
gcc-4fec64b07b9da385b80e89f86c603cb13c90c56c.tar.gz
gcc-4fec64b07b9da385b80e89f86c603cb13c90c56c.tar.bz2
re PR libfortran/25289 (Cannot handle record numbers large than huge(0_4))
2006-07-23 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/25289 * gfortran.h: Declare gfc_large_io_int_kind. * trans-types.c (gfc_init_kinds): Set gfc_large_io_int_kind to size 8 or 4. * trans-io.c (enum iofield_type): Add large_io_int type. (gfc_build_st_parameter): Same. (gfc_build_io_library_fndecls): Same. * ioparm_def: Use large_io_int to define rec. From-SVN: r115700
Diffstat (limited to 'gcc/fortran/trans-io.c')
-rw-r--r--gcc/fortran/trans-io.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c
index 70b9368..2c8e3e6 100644
--- a/gcc/fortran/trans-io.c
+++ b/gcc/fortran/trans-io.c
@@ -52,6 +52,7 @@ enum ioparam_type
enum iofield_type
{
IOPARM_type_int4,
+ IOPARM_type_large_io_int,
IOPARM_type_pint4,
IOPARM_type_pchar,
IOPARM_type_parray,
@@ -168,6 +169,7 @@ gfc_build_st_parameter (enum ioparam_type ptype, tree *types)
switch (p->type)
{
case IOPARM_type_int4:
+ case IOPARM_type_large_io_int:
case IOPARM_type_pint4:
case IOPARM_type_parray:
case IOPARM_type_pchar:
@@ -214,12 +216,15 @@ void
gfc_build_io_library_fndecls (void)
{
tree types[IOPARM_type_num], pad_idx, gfc_int4_type_node;
+ tree gfc_large_io_int_type_node;
tree parm_type, dt_parm_type;
tree gfc_c_int_type_node;
HOST_WIDE_INT pad_size;
enum ioparam_type ptype;
types[IOPARM_type_int4] = gfc_int4_type_node = gfc_get_int_type (4);
+ types[IOPARM_type_large_io_int] = gfc_large_io_int_type_node
+ = gfc_get_int_type (gfc_large_io_int_kind);
types[IOPARM_type_pint4] = build_pointer_type (gfc_int4_type_node);
types[IOPARM_type_parray] = pchar_type_node;
types[IOPARM_type_pchar] = pchar_type_node;