diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2008-10-09 19:28:58 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2008-10-09 19:28:58 +0000 |
commit | e81897731e2232b88f735bf8b8ce319d76983b51 (patch) | |
tree | 620bf329c4f061adbf111c157f4558d884b93c5e /libgfortran | |
parent | c0451df7148578f75d0722ca57be15b437d57d90 (diff) | |
download | gcc-e81897731e2232b88f735bf8b8ce319d76983b51.zip gcc-e81897731e2232b88f735bf8b8ce319d76983b51.tar.gz gcc-e81897731e2232b88f735bf8b8ce319d76983b51.tar.bz2 |
re PR libfortran/37753 (Convert="BIG_ENDIAN" reverses character)
2008-10-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/37753
* io/transfer.c (unformatted_read): CONVERT_NATIVE
is the usual case. Check for kind==1 for non-byte-reversing
operation.
(unformatted_write): Likewise.
2008-10-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/37753
* gfortran.dg/convert_2.f90: New test case.
From-SVN: r141008
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 8 | ||||
-rw-r--r-- | libgfortran/io/transfer.c | 8 |
2 files changed, 12 insertions, 4 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 7905b4c..8332fea 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,11 @@ +2008-10-09 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR libfortran/37753 + * io/transfer.c (unformatted_read): CONVERT_NATIVE + is the usual case. Check for kind==1 for non-byte-reversing + operation. + (unformatted_write): Likewise. + 2008-10-08 Jerry DeLisle <jvdelisle@gcc.gnu.org PR libfortran/37707 diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index cf93a28..acc7cbe 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -738,8 +738,8 @@ unformatted_read (st_parameter_dt *dtp, bt type, { size_t i, sz; - if (dtp->u.p.current_unit->flags.convert == GFC_CONVERT_NATIVE - || size == 1) + if (likely (dtp->u.p.current_unit->flags.convert == GFC_CONVERT_NATIVE) + || kind == 1) { sz = size * nelems; if (type == BT_CHARACTER) @@ -789,8 +789,8 @@ static void unformatted_write (st_parameter_dt *dtp, bt type, void *source, int kind, size_t size, size_t nelems) { - if (dtp->u.p.current_unit->flags.convert == GFC_CONVERT_NATIVE || - size == 1) + if (likely (dtp->u.p.current_unit->flags.convert == GFC_CONVERT_NATIVE) + || kind == 1) { size_t stride = type == BT_CHARACTER ? size * GFC_SIZE_OF_CHAR_KIND(kind) : size; |