]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
transfer.c (unformatted_read): Use size from front end eliminating use of size_from_r...
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Fri, 25 May 2007 17:41:17 +0000 (17:41 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Fri, 25 May 2007 17:41:17 +0000 (17:41 +0000)
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.

From-SVN: r125064

libgfortran/ChangeLog
libgfortran/io/transfer.c

index 7ea870abf098ae54477b7cd5709fc18c2d10f97f..38774284d24825ff4618ea53e153a70ff51bdb4b 100644 (file)
@@ -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.
index 6d23e5e81b995207163c5bc0d66555893e54bbd2..128b4c1be5933d805d0a73489b992a5d4a4510ff 100644 (file)
@@ -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);
        }
     }
 }