public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/39782]  New: IO depends on uninitialised value
@ 2009-04-16  7:29 jv244 at cam dot ac dot uk
  2009-04-16  7:31 ` [Bug fortran/39782] " jv244 at cam dot ac dot uk
                   ` (14 more replies)
  0 siblings, 15 replies; 16+ messages in thread
From: jv244 at cam dot ac dot uk @ 2009-04-16  7:29 UTC (permalink / raw)
  To: gcc-bugs

The following program

      CHARACTER(LEN=80) DATA
      DATA=""
     
OPEN(121245,FILE="/proc/self/statm",ACTION="READ",STATUS="OLD",ACCESS="STREAM")
      DO I=1,80
         READ(121245,END=999) DATA(I:I)
      ENDDO
999   CLOSE(121245)
      DATA(I:80)=""
      END

under valgrind leads to :

==29139== Conditional jump or move depends on uninitialised value(s)
==29139==    at 0x4BE48A5: finalize_transfer (transfer.c:2953)
==29139==    by 0x4BE49E8: _gfortran_st_read_done (transfer.c:3092)
==29139==    by 0x400A2B: MAIN__ (test.f90:5)
==29139==    by 0x400B19: main (fmain.c:21)

which I'm guessing would be a wrong code issue in the io lib.

gcc version 4.4.0 20090414 (prerelease) [gcc-4_4-branch revision 146034] (GCC)


-- 
           Summary: IO depends on uninitialised value
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jv244 at cam dot ac dot uk


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


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

* [Bug fortran/39782] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
@ 2009-04-16  7:31 ` jv244 at cam dot ac dot uk
  2009-04-16 12:56 ` [Bug fortran/39782] [4.5/4.4/4.3 Regression] " jv244 at cam dot ac dot uk
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jv244 at cam dot ac dot uk @ 2009-04-16  7:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from jv244 at cam dot ac dot uk  2009-04-16 07:31 -------
no valgrind errors with g95 or NAG.


-- 


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


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

* [Bug fortran/39782] [4.5/4.4/4.3 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
  2009-04-16  7:31 ` [Bug fortran/39782] " jv244 at cam dot ac dot uk
@ 2009-04-16 12:56 ` jv244 at cam dot ac dot uk
  2009-04-16 12:59 ` [Bug fortran/39782] [4.3/4.4/4.5 " jv244 at cam dot ac dot uk
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jv244 at cam dot ac dot uk @ 2009-04-16 12:56 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from jv244 at cam dot ac dot uk  2009-04-16 12:56 -------
seemingly works fine with 4.2.3


-- 

jv244 at cam dot ac dot uk changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|4.4.0                       |4.4.0 4.3.3 4.5.0
      Known to work|                            |4.2.3
            Summary|IO depends on uninitialised |[4.5/4.4/4.3 Regression] IO
                   |value                       |depends on uninitialised
                   |                            |value


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


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

* [Bug fortran/39782] [4.3/4.4/4.5 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
  2009-04-16  7:31 ` [Bug fortran/39782] " jv244 at cam dot ac dot uk
  2009-04-16 12:56 ` [Bug fortran/39782] [4.5/4.4/4.3 Regression] " jv244 at cam dot ac dot uk
@ 2009-04-16 12:59 ` jv244 at cam dot ac dot uk
  2009-04-16 18:37 ` pinskia at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jv244 at cam dot ac dot uk @ 2009-04-16 12:59 UTC (permalink / raw)
  To: gcc-bugs



-- 

jv244 at cam dot ac dot uk changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.5/4.4/4.3 Regression] IO |[4.3/4.4/4.5 Regression] IO
                   |depends on uninitialised    |depends on uninitialised
                   |value                       |value
   Target Milestone|---                         |4.5.0


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


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

* [Bug fortran/39782] [4.3/4.4/4.5 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (2 preceding siblings ...)
  2009-04-16 12:59 ` [Bug fortran/39782] [4.3/4.4/4.5 " jv244 at cam dot ac dot uk
@ 2009-04-16 18:37 ` pinskia at gcc dot gnu dot org
  2009-04-16 19:10 ` pinskia at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2009-04-16 18:37 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from pinskia at gcc dot gnu dot org  2009-04-16 18:37 -------
Confirmed:
==21080== Conditional jump or move depends on uninitialised value(s)
==21080==    at 0x4BD8A78: finalize_transfer (transfer.c:3147)


-- 

pinskia 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-16 18:37:09
               date|                            |


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


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

* [Bug fortran/39782] [4.3/4.4/4.5 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (3 preceding siblings ...)
  2009-04-16 18:37 ` pinskia at gcc dot gnu dot org
@ 2009-04-16 19:10 ` pinskia at gcc dot gnu dot org
  2009-04-17  1:47 ` jvdelisle at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2009-04-16 19:10 UTC (permalink / raw)
  To: gcc-bugs



-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.5.0                       |4.3.4


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


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

* [Bug fortran/39782] [4.3/4.4/4.5 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (4 preceding siblings ...)
  2009-04-16 19:10 ` pinskia at gcc dot gnu dot org
@ 2009-04-17  1:47 ` jvdelisle at gcc dot gnu dot org
  2009-04-18 10:06 ` jb at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jvdelisle at gcc dot gnu dot org @ 2009-04-17  1:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from jvdelisle at gcc dot gnu dot org  2009-04-17 01:47 -------
I am looking into this.


-- 


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


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

* [Bug fortran/39782] [4.3/4.4/4.5 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (5 preceding siblings ...)
  2009-04-17  1:47 ` jvdelisle at gcc dot gnu dot org
@ 2009-04-18 10:06 ` jb at gcc dot gnu dot org
  2009-04-18 17:11 ` jv244 at cam dot ac dot uk
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jb at gcc dot gnu dot org @ 2009-04-18 10:06 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from jb at gcc dot gnu dot org  2009-04-18 10:05 -------
Subject: Bug 39782

Author: jb
Date: Sat Apr 18 10:05:34 2009
New Revision: 146308

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

        PR libfortran/39782
        * io/transfer.c (data_transfer_init): Don't flush before seek.
        (finalize_transfer): Remove extra flush.


Modified:
    trunk/libgfortran/ChangeLog
    trunk/libgfortran/io/transfer.c


-- 


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


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

* [Bug fortran/39782] [4.3/4.4/4.5 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (6 preceding siblings ...)
  2009-04-18 10:06 ` jb at gcc dot gnu dot org
@ 2009-04-18 17:11 ` jv244 at cam dot ac dot uk
  2009-04-22 13:33 ` [Bug fortran/39782] [4.3/4.4 " rguenth at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jv244 at cam dot ac dot uk @ 2009-04-18 17:11 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from jv244 at cam dot ac dot uk  2009-04-18 17:11 -------
since this is a regression, what about back porting this fix to other branches
(in particular 4.4). This is the only issue that triggers running the >1600
testcases in CP2K testsuite.


-- 

jv244 at cam dot ac dot uk changed:

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


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


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

* [Bug fortran/39782] [4.3/4.4 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (7 preceding siblings ...)
  2009-04-18 17:11 ` jv244 at cam dot ac dot uk
@ 2009-04-22 13:33 ` rguenth at gcc dot gnu dot org
  2009-04-22 21:37 ` jb at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-04-22 13:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from rguenth at gcc dot gnu dot org  2009-04-22 13:32 -------
Backporting to 4.4 and 4.3 sounds fine (note that backports for regressions do
not require extra approval, though of course the usual testing is required).

Fortran, P4.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P4


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


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

* [Bug fortran/39782] [4.3/4.4 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (8 preceding siblings ...)
  2009-04-22 13:33 ` [Bug fortran/39782] [4.3/4.4 " rguenth at gcc dot gnu dot org
@ 2009-04-22 21:37 ` jb at gcc dot gnu dot org
  2009-04-23 14:21 ` jv244 at cam dot ac dot uk
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jb at gcc dot gnu dot org @ 2009-04-22 21:37 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from jb at gcc dot gnu dot org  2009-04-22 21:37 -------
Having a shot at backporting, 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-16 18:37:09         |2009-04-22 21:37:24
               date|                            |


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


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

* [Bug fortran/39782] [4.3/4.4 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (9 preceding siblings ...)
  2009-04-22 21:37 ` jb at gcc dot gnu dot org
@ 2009-04-23 14:21 ` jv244 at cam dot ac dot uk
  2009-05-13 13:47 ` burnus at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: jv244 at cam dot ac dot uk @ 2009-04-23 14:21 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from jv244 at cam dot ac dot uk  2009-04-23 14:21 -------
(In reply to comment #8)
> Having a shot at backporting, assigning to myself.
> 
BTW, I only care about a backport to 4.4, which should be relatively easy.


-- 


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


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

* [Bug fortran/39782] [4.3/4.4 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (10 preceding siblings ...)
  2009-04-23 14:21 ` jv244 at cam dot ac dot uk
@ 2009-05-13 13:47 ` burnus at gcc dot gnu dot org
  2009-05-15 23:50 ` jb at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 16+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-05-13 13:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from burnus at gcc dot gnu dot org  2009-05-13 13:47 -------
For 4.4 the equivalent diff should be the following (untested). I don't see ad
hoc whether the "sfree" can be removed as well or not.

Index: libgfortran/io/transfer.c
===================================================================
--- libgfortran/io/transfer.c   (revision 147470)
+++ libgfortran/io/transfer.c   (working copy)
@@ -2148,7 +2148,6 @@ data_transfer_init (st_parameter_dt *dtp
          if (dtp->pos != dtp->u.p.current_unit->strm_pos)
            {
              fbuf_flush (dtp->u.p.current_unit, 1);
-             flush (dtp->u.p.current_unit->s);
              if (sseek (dtp->u.p.current_unit->s, dtp->pos - 1) == FAILURE)
                {
                  generate_error (&dtp->common, LIBERROR_OS, NULL);
@@ -2951,10 +2950,7 @@ finalize_transfer (st_parameter_dt *dtp)

       if (dtp->u.p.current_unit->flags.form == FORM_UNFORMATTED
          && file_position (dtp->u.p.current_unit->s) >= dtp->rec)
-       {
-         flush (dtp->u.p.current_unit->s);
-         sfree (dtp->u.p.current_unit->s);
-       }
+       sfree (dtp->u.p.current_unit->s);
       return;
     }


-- 


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


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

* [Bug fortran/39782] [4.3/4.4 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (11 preceding siblings ...)
  2009-05-13 13:47 ` burnus at gcc dot gnu dot org
@ 2009-05-15 23:50 ` jb at gcc dot gnu dot org
  2009-05-16 13:38 ` jvdelisle 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-05-15 23:50 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from jb at gcc dot gnu dot org  2009-05-15 23:50 -------
Backported to 4.4 branch as r147601.

Backporting to 4.3 caused regressions, so I'm tempted to just skip that.


-- 


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


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

* [Bug fortran/39782] [4.3/4.4 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (12 preceding siblings ...)
  2009-05-15 23:50 ` jb at gcc dot gnu dot org
@ 2009-05-16 13:38 ` jvdelisle 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-16 13:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from jvdelisle at gcc dot gnu dot org  2009-05-16 13:38 -------
Yes, lets skip 4.3 and close this.


-- 

jvdelisle at gcc dot gnu dot org changed:

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


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


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

* [Bug fortran/39782] [4.3/4.4 Regression] IO depends on uninitialised value
  2009-04-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
                   ` (13 preceding siblings ...)
  2009-05-16 13:38 ` jvdelisle 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 39782

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=39782


^ 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-16  7:29 [Bug fortran/39782] New: IO depends on uninitialised value jv244 at cam dot ac dot uk
2009-04-16  7:31 ` [Bug fortran/39782] " jv244 at cam dot ac dot uk
2009-04-16 12:56 ` [Bug fortran/39782] [4.5/4.4/4.3 Regression] " jv244 at cam dot ac dot uk
2009-04-16 12:59 ` [Bug fortran/39782] [4.3/4.4/4.5 " jv244 at cam dot ac dot uk
2009-04-16 18:37 ` pinskia at gcc dot gnu dot org
2009-04-16 19:10 ` pinskia at gcc dot gnu dot org
2009-04-17  1:47 ` jvdelisle at gcc dot gnu dot org
2009-04-18 10:06 ` jb at gcc dot gnu dot org
2009-04-18 17:11 ` jv244 at cam dot ac dot uk
2009-04-22 13:33 ` [Bug fortran/39782] [4.3/4.4 " rguenth at gcc dot gnu dot org
2009-04-22 21:37 ` jb at gcc dot gnu dot org
2009-04-23 14:21 ` jv244 at cam dot ac dot uk
2009-05-13 13:47 ` burnus at gcc dot gnu dot org
2009-05-15 23:50 ` jb at gcc dot gnu dot org
2009-05-16 13:38 ` jvdelisle 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).