public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libfortran/39665]  New: Fortran IO using unaligned accesses to read/write doubles.
@ 2009-04-06 16:19 sje at cup dot hp dot com
  2009-04-06 16:20 ` [Bug libfortran/39665] " sje at cup dot hp dot com
                   ` (14 more replies)
  0 siblings, 15 replies; 16+ messages in thread
From: sje at cup dot hp dot com @ 2009-04-06 16:19 UTC (permalink / raw)
  To: gcc-bugs

Many fortran tests, like libgfortran.dg/arrayio_9.f90 and
libgfortran.dg/arrayio_10.f90 are failing on IA64 because the IO library is
reading and writing double values to unaligned addresses.

In gdb I see:

(gdb) r
Starting program: /proj/opensrc/nightly/build-ia64-hp-hpux11.23-trunk/x

Program received signal SIGBUS, Bus error
  si_code: 1 - BUS_ADRALN - Invalid address alignment.
0x9fffffffbd717700:0 in *_gfortrani_convert_real (dtp=0x9fffffffffffef80,
    dest=0x9ffffffffffff07c, buffer=0x6000000000021de0 "1", length=8)
    at /proj/opensrc/nightly/src/trunk/libgfortran/io/read.c:154
154           *((GFC_REAL_8*) dest) = strtod (buffer, NULL);

The dest address is not 8 byte aligned which is what is required for writing a
double out to memory on IA64 due to its strong alignment requirement.


-- 
           Summary: Fortran IO using unaligned accesses to read/write
                    doubles.
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libfortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: sje at cup dot hp dot com
GCC target triplet: ia64-hp-hpux11.23


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
@ 2009-04-06 16:20 ` sje at cup dot hp dot com
  2009-04-06 18:17 ` domob at gcc dot gnu dot org
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: sje at cup dot hp dot com @ 2009-04-06 16:20 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from sje at cup dot hp dot com  2009-04-06 16:20 -------
I forgot to mention that this failure started with the merging of the
fortran-dev brach into the mainline.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
  2009-04-06 16:20 ` [Bug libfortran/39665] " sje at cup dot hp dot com
@ 2009-04-06 18:17 ` domob at gcc dot gnu dot org
  2009-04-08 16:22 ` danglin at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: domob at gcc dot gnu dot org @ 2009-04-06 18:17 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from domob at gcc dot gnu dot org  2009-04-06 18:16 -------
See also this thread: http://gcc.gnu.org/ml/fortran/2009-04/msg00065.html


-- 

domob at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-04-06 18:16:54
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
  2009-04-06 16:20 ` [Bug libfortran/39665] " sje at cup dot hp dot com
  2009-04-06 18:17 ` domob at gcc dot gnu dot org
@ 2009-04-08 16:22 ` danglin at gcc dot gnu dot org
  2009-04-08 17:00 ` [Bug libfortran/39665] [4.5 Regression] " burnus at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: danglin at gcc dot gnu dot org @ 2009-04-08 16:22 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from danglin at gcc dot gnu dot org  2009-04-08 16:22 -------
Also see many fortran test fails on hppa64-hp-hpux11.11.


-- 

danglin at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |danglin at gcc dot gnu dot
                   |                            |org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (2 preceding siblings ...)
  2009-04-08 16:22 ` danglin at gcc dot gnu dot org
@ 2009-04-08 17:00 ` burnus at gcc dot gnu dot org
  2009-04-08 17:11 ` jb at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-04-08 17:00 UTC (permalink / raw)
  To: gcc-bugs



-- 

burnus at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Fortran IO using unaligned  |[4.5 Regression] Fortran IO
                   |accesses to read/write      |using unaligned accesses to
                   |doubles.                    |read/write doubles.
   Target Milestone|---                         |4.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (3 preceding siblings ...)
  2009-04-08 17:00 ` [Bug libfortran/39665] [4.5 Regression] " burnus at gcc dot gnu dot org
@ 2009-04-08 17:11 ` jb at gcc dot gnu dot org
  2009-04-08 20:16 ` sje at cup dot hp dot com
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jb at gcc dot gnu dot org @ 2009-04-08 17:11 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from jb at gcc dot gnu dot org  2009-04-08 17:11 -------
Working on a patch, assigning to myself


-- 

jb at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |jb at gcc dot gnu dot org
                   |dot org                     |
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2009-04-06 18:16:54         |2009-04-08 17:11:22
               date|                            |
   Target Milestone|4.5.0                       |---


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (4 preceding siblings ...)
  2009-04-08 17:11 ` jb at gcc dot gnu dot org
@ 2009-04-08 20:16 ` sje at cup dot hp dot com
  2009-04-08 20:59 ` jb at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: sje at cup dot hp dot com @ 2009-04-08 20:16 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from sje at cup dot hp dot com  2009-04-08 20:16 -------
In addition to the alignment problem, check out the case 10 and case 16 entries
in the convert_real subroutine.  After checking to see that strtold exists,
they actually go and call strtod instead of strtold.  This is causing some of
my failures.  Can you roll this change into your patch too.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (5 preceding siblings ...)
  2009-04-08 20:16 ` sje at cup dot hp dot com
@ 2009-04-08 20:59 ` jb at gcc dot gnu dot org
  2009-04-08 21:04 ` sje at cup dot hp dot com
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jb at gcc dot gnu dot org @ 2009-04-08 20:59 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from jb at gcc dot gnu dot org  2009-04-08 20:59 -------
(In reply to comment #5)
> In addition to the alignment problem, check out the case 10 and case 16 entries
> in the convert_real subroutine.  After checking to see that strtold exists,
> they actually go and call strtod instead of strtold.  This is causing some of
> my failures.  Can you roll this change into your patch too.

Huh? At least in my tree (r145761) they call strtold as they should:

#if defined(HAVE_GFC_REAL_10) && defined (HAVE_STRTOLD)
    case 10:
      *((GFC_REAL_10*) dest) = strtold (buffer, NULL);
      break;
#endif

#if defined(HAVE_GFC_REAL_16) && defined (HAVE_STRTOLD)
    case 16:
      *((GFC_REAL_16*) dest) = strtold (buffer, NULL);
      break;
#endif


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (6 preceding siblings ...)
  2009-04-08 20:59 ` jb at gcc dot gnu dot org
@ 2009-04-08 21:04 ` sje at cup dot hp dot com
  2009-04-08 22:36 ` jb at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: sje at cup dot hp dot com @ 2009-04-08 21:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from sje at cup dot hp dot com  2009-04-08 21:04 -------
Doh!  Never mind, I messed it up myself in my local tree.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (7 preceding siblings ...)
  2009-04-08 21:04 ` sje at cup dot hp dot com
@ 2009-04-08 22:36 ` jb at gcc dot gnu dot org
  2009-04-08 22:41 ` pinskia at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jb at gcc dot gnu dot org @ 2009-04-08 22:36 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from jb at gcc dot gnu dot org  2009-04-08 22:36 -------
Patch here: http://gcc.gnu.org/ml/fortran/2009-04/msg00103.html


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (8 preceding siblings ...)
  2009-04-08 22:36 ` jb at gcc dot gnu dot org
@ 2009-04-08 22:41 ` pinskia at gcc dot gnu dot org
  2009-04-09 15:01 ` sje at cup dot hp dot com
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2009-04-08 22:41 UTC (permalink / raw)
  To: gcc-bugs



-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|                            |http://gcc.gnu.org/ml/fortra
                   |                            |n/2009-04/msg00103.html
           Keywords|                            |patch
   Target Milestone|---                         |4.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (9 preceding siblings ...)
  2009-04-08 22:41 ` pinskia at gcc dot gnu dot org
@ 2009-04-09 15:01 ` sje at cup dot hp dot com
  2009-04-09 17:45 ` jb at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: sje at cup dot hp dot com @ 2009-04-09 15:01 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from sje at cup dot hp dot com  2009-04-09 14:59 -------
The proposed patch fixed my failures on IA64-hp-hpux11.23.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (10 preceding siblings ...)
  2009-04-09 15:01 ` sje at cup dot hp dot com
@ 2009-04-09 17:45 ` jb at gcc dot gnu dot org
  2009-04-10  7:23 ` jb at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jb at gcc dot gnu dot org @ 2009-04-09 17:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from jb at gcc dot gnu dot org  2009-04-09 17:44 -------
Subject: Bug 39665

Author: jb
Date: Thu Apr  9 17:44:23 2009
New Revision: 145852

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145852
Log:
2009-04-09  Janne Blomqvist  <jb@gcc.gnu.org>

        PR fortran/39665
        * io/io.h (st_parameter_dt): Add aligned attribute to u.p.value.
        * io/read.c (convert_real): Add note about alignment requirements.


Modified:
    trunk/libgfortran/ChangeLog
    trunk/libgfortran/io/io.h
    trunk/libgfortran/io/read.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (11 preceding siblings ...)
  2009-04-09 17:45 ` jb at gcc dot gnu dot org
@ 2009-04-10  7:23 ` jb at gcc dot gnu dot org
  2009-04-13 16:55 ` jb at gcc dot gnu dot org
  2009-05-27  1:23 ` jvdelisle at gcc dot gnu dot org
  14 siblings, 0 replies; 16+ messages in thread
From: jb at gcc dot gnu dot org @ 2009-04-10  7:23 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from jb at gcc dot gnu dot org  2009-04-10 07:23 -------
Subject: Bug 39665

Author: jb
Date: Fri Apr 10 07:23:25 2009
New Revision: 145875

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145875
Log:
2009-04-10  Janne Blomqvist  <jb@gcc.gnu.org>

        PR libfortran/39665 libfortran/39702 libfortran/39709
        * io/io.h (st_parameter_dt): Revert aligned attribute from u.p.value.
        * io/list_read.c (read_complex): Read directly into user pointer.
        (read_real): Likewise.
        (list_formatted_read_scalar): Update read_complex and read_real calls.
        (nml_read_obj): Read directly into user pointer.


Modified:
    trunk/libgfortran/ChangeLog
    trunk/libgfortran/io/io.h
    trunk/libgfortran/io/list_read.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (12 preceding siblings ...)
  2009-04-10  7:23 ` jb at gcc dot gnu dot org
@ 2009-04-13 16:55 ` jb at gcc dot gnu dot org
  2009-05-27  1:23 ` jvdelisle at gcc dot gnu dot org
  14 siblings, 0 replies; 16+ messages in thread
From: jb at gcc dot gnu dot org @ 2009-04-13 16:55 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from jb at gcc dot gnu dot org  2009-04-13 16:55 -------
Fixed as of r145875


-- 

jb at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug libfortran/39665] [4.5 Regression] Fortran IO using unaligned accesses to read/write doubles.
  2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
                   ` (13 preceding siblings ...)
  2009-04-13 16:55 ` jb at gcc dot gnu dot org
@ 2009-05-27  1:23 ` jvdelisle at gcc dot gnu dot org
  14 siblings, 0 replies; 16+ messages in thread
From: jvdelisle at gcc dot gnu dot org @ 2009-05-27  1:23 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from jvdelisle at gcc dot gnu dot org  2009-05-27 01:22 -------
Subject: Bug 39665

Author: jvdelisle
Date: Wed May 27 01:21:22 2009
New Revision: 147887

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=147887
Log:
2009-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

        Backport from mainline:
        PR libfortran/37754
        * io/write_float.def: Simplify format calculation.

2009-05-23  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

        Backport from mainline:
        PR fortran/22423
        * io/transfer.c (read_block_direct): Avoid warning.

2009-05-23  Janne Blomqvist  <jb@gcc.gnu.org>

        Backport from mainline:
        PR libfortran/39667
        * io/file_pos.c (st_rewind): Don't truncate or flush.
        * io/intrinsics.c (fgetc): Flush if switching mode.
        (fputc): Likewise.

2009-05-23  Janne Blomqvist  <jb@gcc.gnu.org>

        Backport from mainline:
        PR libfortran/39782
        * io/transfer.c (data_transfer_init): Don't flush before seek.

2009-05-23  Janne Blomqvist  <jb@gcc.gnu.org>

        Backport from mainline:
        * io/io.h (is_preconnected): Remove prototype.
        * io/unix.c (is_preconnected): Remove function.

2009-05-23  Janne Blomqvist  <jb@gcc.gnu.org>

        Backport from mainline:
        PR libfortran/38668
        * io/transfer.c (finalize_transfer): Don't flush for advance='no'.

2009-05-23 Danny Smith  <dannysmith@clear.net.nz>

        Backport from mainline:
        * io/write.c (itoa) : Rename back to gfc_itoa.
        (write_i): Adjust call to write_decimal.
        (write_integer):  Use gfc_itoa.

2009-05-23  Janne Blomqvist  <jb@gcc.gnu.org>

        Backport from mainline:
        * io/io.h (move_pos_offset): Remove prototype.
        * io/transfer.c (formatted_transfer_scalar_read): Use sseek
        instead of move_pos_offset.
        * io/unix.c (move_pos_offset): Remove.

2009-05-23  Janne Blomqvist  <jb@gcc.gnu.org>

        Backport from mainline:
        PR libfortran/39665 libfortran/39702 libfortran/39709
        * io/io.h (st_parameter_dt): Revert aligned attribute from u.p.value.
        * io/list_read.c (read_complex): Read directly into user pointer.
        (read_real): Likewise.
        (list_formatted_read_scalar): Update read_complex and read_real calls.
        (nml_read_obj): Read directly into user pointer.

2009-05-23  Janne Blomqvist  <jb@gcc.gnu.org>

        Backport from mainline:
        PR libfortran/39665
        * io/io.h (st_parameter_dt): Add aligned attribute to u.p.value.
        * io/read.c (convert_real): Add note about alignment requirements.

2009-05-23  Janne Blomqvist  <jb@gcc.gnu.org>

        Backport from mainline:
        * io/open.c (already_open): Test for POSIX close return value.
        * io/unit.c (close_unit_1): Likewise.
        * io/unix.c (raw_close): Return 0 for success for preconnected units.

2009-05-23  Janne Blomqvist  <jb@gcc.gnu.org>

        Backport from mainline:
        * runtime/error.c (gfc_itoa): Move to io/write.c
        (xtoa): Rename to gfc_xtoa.
        * runtime/backtrace.c (show_backtrace): Call gfc_xtoa.
        * libgfortran.h (gfc_itoa): Remove prototype.
        (xtoa): Rename prototype to gfc_xtoa.
        * io/list_read.c (nml_read_obj): Use size_t for string length.
        * io/transfer.c (read_block_direct): Change nbytes arg from
        pointer to value.
        (unformatted_read): Minor cleanup, call read_block_directly properly.
        (skip_record): Use ssize_t.
        (next_record_w_unf): Avoid stell() call by calling sseek with SEEK_CUR.
        (iolength_transfer): Make sure to multiply before cast.
        * io/intrinsics.c (fgetc): Remove unnecessary variable.
        * io/format.c (format_hash): Use gfc_charlen_type.
        * io/write.c (itoa): Move from runtime/error.c:gfc_itoa, rename,
        make static.
        (write_i): Call with pointer to itoa.
        (write_z): Call with pointer to gfc_xtoa.
        (write_integer): Pointer to itoa.
        (nml_write_obj): Type cleanup, don't call strlen in loop.

2009-05-23  H.J. Lu  <hongjiu.lu@intel.com>

        Backport from mainline:
        PR libgfortran/39664
        * io/unix.c (raw_close): Don't close STDOUT_FILENO,
        STDERR_FILENO nor STDIN_FILENO.

2009-05-23  David Edelsohn  <edelsohn@gnu.org>

        Backport from mainline:
        * io/io.h (struct stream): Rename truncate to trunc.
        (struncate): Same.
        * io/unix.c (raw_init): Rename truncate to trunc.
        (buf_init): Same.
        (open_internal): Same.

2009-05-23  Daniel Kraft  <d@domob.eu>

        Backport from mainline:
        PR fortran/38654
        * io/read.c (read_f): Reworked to speed up floating point parsing.
        (convert_real): Use pointer-casting instead of memcpy and temporaries.

2009-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

        Backport from mainline:
        PR libfortran/37754
        * io/io.h (format_hash_entry): New structure for hash table.
        (format_hash_table): The hash table itself.
        (free_format_data): Revise function prototype.
        (free_format_hash_table, init_format_hash,
        free_format_hash): New function prototypes.
        * io/unit.c (close_unit_1): Use free_format_hash_table.
        * io/transfer.c (st_read_done, st_write_done): Free format data if
        internal unit.
        * io/format.c (free_format_hash_table): New function that frees any
        memory allocated previously for cached format data.
        (reset_node): New static helper function to reset the format counters
        for a format node.
        (reset_fnode_counters): New static function recursively calls
reset_node
        to traverse the fnode tree.
        (format_hash): New simple hash function based on XOR, probabalistic,
        tosses collisions.
        (save_parsed_format): New static function to save the parsed format
        data to use again.
        (find_parsed_format): New static function searches the hash table
        looking for a match.
        (free_format_data): Revised to accept pointer to format data rather
than
        the dtp pointer so that the function can be used in more places.
        (format_lex): Editorial.
        (parse_format_list): Set flag used to determine of format data hashing
        is to be used.  Internal units are not persistent enough for this.
        (revert): Move to ne location in file.
        (parse_format): Use new functions to look for previously parsed
        format strings and use them rather than re-parse.  If not found, saves
        the parsed format data for later use.

2009-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

        Backport from mainline:
        PR libfortran/37754
        * io/transfer.c (formatted_transfer_scalar): Remove this function by
        factoring it into two new functions, one for read and one for write,
        eliminating all the conditionals for read or write mode.
        (formatted transfer_scalar_read): New function.
        (formatted transfer_scalar_write): New function.
        (formatted_transfer): Use new functions.

2009-05-23  Janne Blomqvist  <jb@gcc.gnu.org>

        Backport from mainline:
        PR libfortran/25561 libfortran/37754
        * io/io.h (struct stream): Define new stream interface function
        pointers, and inline functions for accessing it.
        (struct fbuf): Use int instead of size_t, remove flushed element.
        (mem_alloc_w): New prototype.
        (mem_alloc_r): New prototype.
        (stream_at_bof): Remove prototype.
        (stream_at_eof): Remove prototype.
        (file_position): Remove prototype.
        (flush): Remove prototype.
        (stream_offset): Remove prototype.
        (unit_truncate): New prototype.
        (read_block_form): Change to return pointer, int* argument.
        (hit_eof): New prototype.
        (fbuf_init): Change prototype.
        (fbuf_reset): Change prototype.
        (fbuf_alloc): Change prototype.
        (fbuf_flush): Change prototype.
        (fbuf_seek): Change prototype.
        (fbuf_read): New prototype.
        (fbuf_getc_refill): New prototype.
        (fbuf_getc): New inline function.
        * io/fbuf.c (fbuf_init): Use int, get rid of flushed.
        (fbuf_debug): New function.
        (fbuf_reset): Flush, and return position offset.
        (fbuf_alloc): Simplify, don't flush, just realloc.
        (fbuf_flush): Make usable for read mode, salvage remaining bytes.
        (fbuf_seek): New whence argument.
        (fbuf_read): New function.
        (fbuf_getc_refill): New function.
        * io/file_pos.c (formatted_backspace): Use new stream interface.
        (unformatted_backspace): Likewise.
        (st_backspace): Make sure format buffer is reset, use new stream
        interface, use unit_truncate.
        (st_endfile): Likewise.
        (st_rewind): Likewise.
        * io/intrinsics.c: Use new stream interface.
        * io/list_read.c (push_char): Don't use u.p.scratch, use realloc
        to resize.
        (free_saved): Don't check u.p.scratch.
        (next_char): Use new stream interface, use fbuf_getc() for external
files.
        (finish_list_read): flush format buffer.
        (nml_query): Update to use modified interface:s
        * io/open.c (test_endfile): Use new stream interface.
        (edit_modes): Likewise.
        (new_unit): Likewise, set bytes_left to 1 for stream files.
        * io/read.c (read_l): Use new read_block_form interface.
        (read_utf8): Likewise.
        (read_utf8_char1): Likewise.
        (read_default_char1): Likewise.
        (read_utf8_char4): Likewise.
        (read_default_char4): Likewise.
        (read_a): Likewise.
        (read_a_char4): Likewise.
        (read_decimal): Likewise.
        (read_radix): Likewise.
        (read_f): Likewise.
        * io/transfer.c (read_sf): Use fbuf_read and mem_alloc_r, remove
        usage of u.p.line_buffer.
        (read_block_form): Update interface to return pointer, use
        fbuf_read for direct access.
        (read_block_direct): Update to new stream interface.
        (write_block): Use mem_alloc_w for internal I/O.
        (write_buf): Update to new stream interface.
        (formatted_transfer_scalar): Don't use u.p.line_buffer, use
        fbuf_seek for external files.
        (us_read): Update to new stream interface.
        (us_write): Likewise.
        (data_transfer_init): Always check if we switch modes and flush.
        (skip_record): Use new stream interface, fix comparison.
        (next_record_r): Check for and reset u.p.at_eof, use new stream
        interface, use fbuf_getc for spacing.
        (write_us_marker): Update to new stream interface, don't inline.
        (next_record_w_unf): Likewise.
        (sset): New function.
        (next_record_w): Use new stream interface, use fbuf for printing
        newline.
        (next_record): Use new stream interface.
        (finalize_transfer): Remove sfree call, use new stream interface.
        (st_iolength_done): Don't use u.p.scratch.
        (st_read): Don't check for end of file.
        (st_read_done): Don't use u.p.scratch, use unit_truncate.
        (hit_eof): New function.
        * io/unit.c (init_units): Always init fbuf for formatted units.
        (update_position): Use new stream interface.
        (unit_truncate): New function.
        (finish_last_advance_record): Use fbuf to print newline.
        * io/unix.c: Remove unused SSIZE_MAX macro.
        (BUFFER_SIZE): Make static const variable rather than macro.
        (struct unix_stream): Remove dirty_offset, len, method,
        small_buffer. Order elements by decreasing size.
        (struct int_stream): Remove.
        (move_pos_offset): Remove usage of dirty_offset.
        (reset_stream): Remove.
        (do_read): Rename to raw_read, update to match new stream
        interface.
        (do_write): Rename to raw_write, update to new stream interface.
        (raw_seek): New function.
        (raw_tell): New function.
        (raw_truncate): New function.
        (raw_close): New function.
        (raw_flush): New function.
        (raw_init): New function.
        (fd_alloc): Remove.
        (fd_alloc_r_at): Remove.
        (fd_alloc_w_at): Remove.
        (fd_sfree): Remove.
        (fd_seek): Remove.
        (fd_truncate): Remove.
        (fd_sset): Remove.
        (fd_read): Remove.
        (fd_write): Remove.
        (fd_close): Remove.
        (fd_open): Remove.
        (fd_flush): Rename to buf_flush, update to new stream interface
        and unix_stream.
        (buf_read): New function.
        (buf_write): New function.
        (buf_seek): New function.
        (buf_tell): New function.
        (buf_truncate): New function.
        (buf_close): New function.
        (buf_init): New function.
        (mem_alloc_r_at): Rename to mem_alloc_r, change prototype.
        (mem_alloc_w_at): Rename to mem_alloc_w, change prototype.
        (mem_read): Change to match new stream interface.
        (mem_write): Likewise.
        (mem_seek): Likewise.
        (mem_tell): Likewise.
        (mem_truncate): Likewise.
        (mem_close): Likewise.
        (mem_flush): New function.
        (mem_sfree): Remove.
        (empty_internal_buffer): Cast to correct type.
        (open_internal): Use correct type, init function pointers.
        (fd_to_stream): Test whether to open file as buffered or raw.
        (output_stream): Remove mode set.
        (error_stream): Likewise.
        (flush_all_units_1): Use new stream interface.
        (flush_all_units): Likewise.
        (stream_at_bof): Remove.
        (stream_at_eof): Remove.
        (file_position): Remove.
        (file_length): Update logic to use stream interface.
        (flush): Remove.
        (stream_offset): Remove.
        * io/write.c (write_utf8_char4): Use int instead of size_t.
        (write_x): Extra safety check.
        (namelist_write_newline): Use new stream interface.


Modified:
    branches/gcc-4_4-branch/libgfortran/ChangeLog
    branches/gcc-4_4-branch/libgfortran/io/fbuf.c
    branches/gcc-4_4-branch/libgfortran/io/file_pos.c
    branches/gcc-4_4-branch/libgfortran/io/format.c
    branches/gcc-4_4-branch/libgfortran/io/intrinsics.c
    branches/gcc-4_4-branch/libgfortran/io/io.h
    branches/gcc-4_4-branch/libgfortran/io/list_read.c
    branches/gcc-4_4-branch/libgfortran/io/open.c
    branches/gcc-4_4-branch/libgfortran/io/read.c
    branches/gcc-4_4-branch/libgfortran/io/transfer.c
    branches/gcc-4_4-branch/libgfortran/io/unit.c
    branches/gcc-4_4-branch/libgfortran/io/unix.c
    branches/gcc-4_4-branch/libgfortran/io/write.c
    branches/gcc-4_4-branch/libgfortran/io/write_float.def
    branches/gcc-4_4-branch/libgfortran/libgfortran.h
    branches/gcc-4_4-branch/libgfortran/runtime/backtrace.c
    branches/gcc-4_4-branch/libgfortran/runtime/error.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39665


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2009-05-27  1:23 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-06 16:19 [Bug libfortran/39665] New: Fortran IO using unaligned accesses to read/write doubles sje at cup dot hp dot com
2009-04-06 16:20 ` [Bug libfortran/39665] " sje at cup dot hp dot com
2009-04-06 18:17 ` domob at gcc dot gnu dot org
2009-04-08 16:22 ` danglin at gcc dot gnu dot org
2009-04-08 17:00 ` [Bug libfortran/39665] [4.5 Regression] " burnus at gcc dot gnu dot org
2009-04-08 17:11 ` jb at gcc dot gnu dot org
2009-04-08 20:16 ` sje at cup dot hp dot com
2009-04-08 20:59 ` jb at gcc dot gnu dot org
2009-04-08 21:04 ` sje at cup dot hp dot com
2009-04-08 22:36 ` jb at gcc dot gnu dot org
2009-04-08 22:41 ` pinskia at gcc dot gnu dot org
2009-04-09 15:01 ` sje at cup dot hp dot com
2009-04-09 17:45 ` jb at gcc dot gnu dot org
2009-04-10  7:23 ` jb at gcc dot gnu dot org
2009-04-13 16:55 ` jb at gcc dot gnu dot org
2009-05-27  1:23 ` jvdelisle at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).