diff options
author | jvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-05-25 17:41:17 +0000 |
---|---|---|
committer | jvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-05-25 17:41:17 +0000 |
commit | a682a24e173477f7dc4dd53fb75316959e510019 (patch) | |
tree | 4d991d392c31ab031e319649f3159ca64311a652 /libgfortran | |
parent | 75bbc19a81d94bdcbbe6f457ac17bd3939fbdfb6 (diff) | |
download | gcc-a682a24e173477f7dc4dd53fb75316959e510019.tar.gz |
2007-05-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* io/transfer.c (unformatted_read): Use size from front end eliminating
use of size_from_real_kind. (unformatted_write): Ditto.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125064 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 5 | ||||
-rw-r--r-- | libgfortran/io/transfer.c | 27 |
2 files changed, 15 insertions, 17 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 7ea870abf09..38774284d24 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,8 @@ +2007-05-25 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + * io/transfer.c (unformatted_read): Use size from front end eliminating + use of size_from_real_kind. (unformatted_write): Ditto. + 2007-05-23 Steve Ellcey <sje@cup.hp.com> * Makefile.in: Regenerate. diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index 6d23e5e81b9..128b4c1be59 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -695,7 +695,7 @@ write_buf (st_parameter_dt *dtp, void *buf, size_t nbytes) static void unformatted_read (st_parameter_dt *dtp, bt type, - void *dest, int kind, + void *dest, int kind __attribute__((unused)), size_t size, size_t nelems) { size_t i, sz; @@ -723,40 +723,37 @@ unformatted_read (st_parameter_dt *dtp, bt type, /* By now, all complex variables have been split into their constituent reals. */ - if (type == BT_REAL || type == BT_COMPLEX) - sz = size_from_real_kind (kind); - else - sz = kind; - for (i=0; i<nelems; i++) { - read_block_direct (dtp, buffer, &sz); - reverse_memcpy (p, buffer, sz); + read_block_direct (dtp, buffer, &size); + reverse_memcpy (p, buffer, size); p += size; } } } -/* Master function for unformatted writes. */ +/* Master function for unformatted writes. NOTE: For kind=10 the size is 16 + bytes on 64 bit machines. The unused bytes are not initialized and never + used, which can show an error with memory checking analyzers like + valgrind. */ static void unformatted_write (st_parameter_dt *dtp, bt type, - void *source, int kind, + void *source, int kind __attribute__((unused)), size_t size, size_t nelems) { if (dtp->u.p.current_unit->flags.convert == CONVERT_NATIVE || size == 1 || type == BT_CHARACTER) { size *= nelems; - write_buf (dtp, source, size); } else { char buffer[16]; char *p; - size_t i, sz; + size_t i; /* Break up complex into its constituent reals. */ if (type == BT_COMPLEX) @@ -770,16 +767,12 @@ unformatted_write (st_parameter_dt *dtp, bt type, /* By now, all complex variables have been split into their constituent reals. */ - if (type == BT_REAL || type == BT_COMPLEX) - sz = size_from_real_kind (kind); - else - sz = kind; for (i=0; i<nelems; i++) { reverse_memcpy(buffer, p, size); p+= size; - write_buf (dtp, buffer, sz); + write_buf (dtp, buffer, size); } } } |