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