* [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