diff options
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 22 | ||||
-rw-r--r-- | libgfortran/gfortran.map | 7 | ||||
-rw-r--r-- | libgfortran/io/transfer.c | 60 |
3 files changed, 89 insertions, 0 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index c462a2a..adcb386 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,25 @@ +2010-10-16 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/20165 + PR fortran/31593 + PR fortran/43665 + * gfortran.map: Add _gfortran_transfer_array_write, + _gfortran_transfer_array_write, _gfortran_transfer_character_write, + _gfortran_transfer_character_wide_write, + _gfortran_transfer_complex_write, + _gfortran_transfer_integer_write, + _gfortran_transfer_logical_write and + _gfortran_transfer_real_write. + * io/transfer.c (transfer_integer_write): Add prototype and + function body as call to the original function, without the + _write. + (transfer_real_write): Likewise. + (transfer_logical_write): Likewise. + (transfer_character_write): Likewise. + (transfer_character_wide_write): Likewise. + (transfer_complex_write): Likewise. + (transfer_array_write): Likewise. + 2010-09-22 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/45710 diff --git a/libgfortran/gfortran.map b/libgfortran/gfortran.map index ea6ebfa..c85ebf7 100644 --- a/libgfortran/gfortran.map +++ b/libgfortran/gfortran.map @@ -1141,6 +1141,13 @@ GFORTRAN_1.4 { _gfortran_parity_l8; _gfortran_parity_l16; _gfortran_selected_real_kind2008; + _gfortran_transfer_array_write; + _gfortran_transfer_character_write; + _gfortran_transfer_character_wide_write; + _gfortran_transfer_complex_write; + _gfortran_transfer_integer_write; + _gfortran_transfer_logical_write; + _gfortran_transfer_real_write; } GFORTRAN_1.3; F2C_1.0 { diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index f750a56..41d5a42 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -67,25 +67,48 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see extern void transfer_integer (st_parameter_dt *, void *, int); export_proto(transfer_integer); +extern void transfer_integer_write (st_parameter_dt *, void *, int); +export_proto(transfer_integer_write); + extern void transfer_real (st_parameter_dt *, void *, int); export_proto(transfer_real); +extern void transfer_real_write (st_parameter_dt *, void *, int); +export_proto(transfer_real_write); + extern void transfer_logical (st_parameter_dt *, void *, int); export_proto(transfer_logical); +extern void transfer_logical_write (st_parameter_dt *, void *, int); +export_proto(transfer_logical_write); + extern void transfer_character (st_parameter_dt *, void *, int); export_proto(transfer_character); +extern void transfer_character_write (st_parameter_dt *, void *, int); +export_proto(transfer_character_write); + extern void transfer_character_wide (st_parameter_dt *, void *, int, int); export_proto(transfer_character_wide); +extern void transfer_character_wide_write (st_parameter_dt *, + void *, int, int); +export_proto(transfer_character_wide_write); + extern void transfer_complex (st_parameter_dt *, void *, int); export_proto(transfer_complex); +extern void transfer_complex_write (st_parameter_dt *, void *, int); +export_proto(transfer_complex_write); + extern void transfer_array (st_parameter_dt *, gfc_array_char *, int, gfc_charlen_type); export_proto(transfer_array); +extern void transfer_array_write (st_parameter_dt *, gfc_array_char *, int, + gfc_charlen_type); +export_proto(transfer_array_write); + static void us_read (st_parameter_dt *, int); static void us_write (st_parameter_dt *, int); static void next_record_r_unf (st_parameter_dt *, int); @@ -1847,6 +1870,11 @@ transfer_integer (st_parameter_dt *dtp, void *p, int kind) dtp->u.p.transfer (dtp, BT_INTEGER, p, kind, kind, 1); } +void +transfer_integer_write (st_parameter_dt *dtp, void *p, int kind) +{ + transfer_integer (dtp, p, kind); +} void transfer_real (st_parameter_dt *dtp, void *p, int kind) @@ -1858,6 +1886,11 @@ transfer_real (st_parameter_dt *dtp, void *p, int kind) dtp->u.p.transfer (dtp, BT_REAL, p, kind, size, 1); } +void +transfer_real_write (st_parameter_dt *dtp, void *p, int kind) +{ + transfer_real (dtp, p, kind); +} void transfer_logical (st_parameter_dt *dtp, void *p, int kind) @@ -1867,6 +1900,11 @@ transfer_logical (st_parameter_dt *dtp, void *p, int kind) dtp->u.p.transfer (dtp, BT_LOGICAL, p, kind, kind, 1); } +void +transfer_logical_write (st_parameter_dt *dtp, void *p, int kind) +{ + transfer_logical (dtp, p, kind); +} void transfer_character (st_parameter_dt *dtp, void *p, int len) @@ -1887,6 +1925,12 @@ transfer_character (st_parameter_dt *dtp, void *p, int len) } void +transfer_character_write (st_parameter_dt *dtp, void *p, int len) +{ + transfer_character (dtp, p, len); +} + +void transfer_character_wide (st_parameter_dt *dtp, void *p, int len, int kind) { static char *empty_string[0]; @@ -1904,6 +1948,11 @@ transfer_character_wide (st_parameter_dt *dtp, void *p, int len, int kind) dtp->u.p.transfer (dtp, BT_CHARACTER, p, kind, len, 1); } +void +transfer_character_wide_write (st_parameter_dt *dtp, void *p, int len, int kind) +{ + transfer_character_wide (dtp, p, len, kind); +} void transfer_complex (st_parameter_dt *dtp, void *p, int kind) @@ -1915,6 +1964,11 @@ transfer_complex (st_parameter_dt *dtp, void *p, int kind) dtp->u.p.transfer (dtp, BT_COMPLEX, p, kind, size, 1); } +void +transfer_complex_write (st_parameter_dt *dtp, void *p, int kind) +{ + transfer_complex (dtp, p, kind); +} void transfer_array (st_parameter_dt *dtp, gfc_array_char *desc, int kind, @@ -2020,6 +2074,12 @@ transfer_array (st_parameter_dt *dtp, gfc_array_char *desc, int kind, } } +void +transfer_array_write (st_parameter_dt *dtp, gfc_array_char *desc, int kind, + gfc_charlen_type charlen) +{ + transfer_array (dtp, desc, kind, charlen); +} /* Preposition a sequential unformatted file while reading. */ |