Bug 39667

Summary: I/O possibly unneccesary truncations
Product: gcc Reporter: Tobias Burnus <burnus>
Component: fortranAssignee: Janne Blomqvist <jb>
Status: RESOLVED FIXED    
Severity: normal CC: gcc-bugs
Priority: P3 Keywords: missed-optimization
Version: 4.5.0   
Target Milestone: ---   
URL: http://gcc.gnu.org/ml/gcc-patches/2009-08/msg01388.html
Host: Target:
Build: Known to work:
Known to fail: Last reconfirmed: 2009-04-17 22:18:55

Description Tobias Burnus 2009-04-06 18:16:21 UTC
See: http://gcc.gnu.org/ml/fortran/2009-04/msg00054.html

Some namelist and utf8/widechar tests now require a working fd_truncate, which causes failures on systems not offering this.

Thus one should check whether the truncations are really needed.
Comment 1 Janne Blomqvist 2009-04-17 22:18:55 UTC
Confirmed, assigning to myself.
Comment 2 Janne Blomqvist 2009-04-30 15:12:59 UTC
Subject: Bug 39667

Author: jb
Date: Thu Apr 30 15:12:37 2009
New Revision: 147004

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=147004
Log:
Fix PR libfortran/39667

Modified:
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/advance_1.f90
    trunk/gcc/testsuite/gfortran.dg/advance_4.f90
    trunk/gcc/testsuite/gfortran.dg/advance_5.f90
    trunk/gcc/testsuite/gfortran.dg/append_1.f90
    trunk/gcc/testsuite/gfortran.dg/backslash_1.f90
    trunk/gcc/testsuite/gfortran.dg/backslash_2.f90
    trunk/gcc/testsuite/gfortran.dg/backslash_3.f
    trunk/gcc/testsuite/gfortran.dg/backspace_10.f90
    trunk/gcc/testsuite/gfortran.dg/backspace_3.f
    trunk/gcc/testsuite/gfortran.dg/backspace_4.f
    trunk/gcc/testsuite/gfortran.dg/backspace_5.f
    trunk/gcc/testsuite/gfortran.dg/backspace_8.f
    trunk/gcc/testsuite/gfortran.dg/backspace_9.f
    trunk/gcc/testsuite/gfortran.dg/complex_write.f90
    trunk/gcc/testsuite/gfortran.dg/convert_implied_open.f90
    trunk/gcc/testsuite/gfortran.dg/dollar_edit_descriptor_1.f
    trunk/gcc/testsuite/gfortran.dg/dos_eol.f
    trunk/gcc/testsuite/gfortran.dg/empty_format_1.f90
    trunk/gcc/testsuite/gfortran.dg/endfile.f
    trunk/gcc/testsuite/gfortran.dg/eof_1.f90
    trunk/gcc/testsuite/gfortran.dg/eor_1.f90
    trunk/gcc/testsuite/gfortran.dg/eor_handling_1.f90
    trunk/gcc/testsuite/gfortran.dg/eor_handling_2.f90
    trunk/gcc/testsuite/gfortran.dg/eor_handling_3.f90
    trunk/gcc/testsuite/gfortran.dg/eor_handling_4.f90
    trunk/gcc/testsuite/gfortran.dg/eor_handling_5.f90
    trunk/gcc/testsuite/gfortran.dg/error_recovery_5.f90
    trunk/gcc/testsuite/gfortran.dg/f2003_inquire_1.f03
    trunk/gcc/testsuite/gfortran.dg/f2003_io_4.f03
    trunk/gcc/testsuite/gfortran.dg/f2003_io_5.f03
    trunk/gcc/testsuite/gfortran.dg/f2003_io_7.f03
    trunk/gcc/testsuite/gfortran.dg/fgetc_1.f90
    trunk/gcc/testsuite/gfortran.dg/fgetc_2.f90
    trunk/gcc/testsuite/gfortran.dg/flush_1.f90
    trunk/gcc/testsuite/gfortran.dg/fmt_exhaust.f90
    trunk/gcc/testsuite/gfortran.dg/fmt_huge.f90
    trunk/gcc/testsuite/gfortran.dg/fmt_read.f90
    trunk/gcc/testsuite/gfortran.dg/fmt_t_1.f90
    trunk/gcc/testsuite/gfortran.dg/fmt_t_2.f90
    trunk/gcc/testsuite/gfortran.dg/fmt_t_3.f90
    trunk/gcc/testsuite/gfortran.dg/fmt_t_4.f90
    trunk/gcc/testsuite/gfortran.dg/fmt_t_5.f90
    trunk/gcc/testsuite/gfortran.dg/fmt_t_7.f
    trunk/gcc/testsuite/gfortran.dg/fseek.f90
    trunk/gcc/testsuite/gfortran.dg/ftell_1.f90
    trunk/gcc/testsuite/gfortran.dg/ftell_2.f90
    trunk/gcc/testsuite/gfortran.dg/func_derived_3.f90
    trunk/gcc/testsuite/gfortran.dg/inquire_9.f90
    trunk/gcc/testsuite/gfortran.dg/iostat_1.f90
    trunk/gcc/testsuite/gfortran.dg/iostat_2.f90
    trunk/gcc/testsuite/gfortran.dg/list_read_1.f90
    trunk/gcc/testsuite/gfortran.dg/list_read_4.f90
    trunk/gcc/testsuite/gfortran.dg/list_read_5.f90
    trunk/gcc/testsuite/gfortran.dg/list_read_7.f90
    trunk/gcc/testsuite/gfortran.dg/list_read_8.f90
    trunk/gcc/testsuite/gfortran.dg/list_read_9.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_13.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_14.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_15.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_16.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_17.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_18.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_19.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_20.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_24.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_26.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_27.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_28.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_37.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_38.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_39.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_40.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_43.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_44.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_45.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_46.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_47.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_48.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_49.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_50.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_51.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_52.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_56.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_char_only.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_use.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_use_only.f90
    trunk/gcc/testsuite/gfortran.dg/noadv_size.f90
    trunk/gcc/testsuite/gfortran.dg/open_access_append_1.f90
    trunk/gcc/testsuite/gfortran.dg/pad_no.f90
    trunk/gcc/testsuite/gfortran.dg/pr12884.f
    trunk/gcc/testsuite/gfortran.dg/pr17090.f90
    trunk/gcc/testsuite/gfortran.dg/pr17285.f90
    trunk/gcc/testsuite/gfortran.dg/pr17286.f90
    trunk/gcc/testsuite/gfortran.dg/pr18122.f90
    trunk/gcc/testsuite/gfortran.dg/pr18210.f90
    trunk/gcc/testsuite/gfortran.dg/pr18392.f90
    trunk/gcc/testsuite/gfortran.dg/pr19155.f
    trunk/gcc/testsuite/gfortran.dg/pr19216.f
    trunk/gcc/testsuite/gfortran.dg/pr19467.f90
    trunk/gcc/testsuite/gfortran.dg/pr19657.f
    trunk/gcc/testsuite/gfortran.dg/pr20257.f90
    trunk/gcc/testsuite/gfortran.dg/read_bad_advance.f90
    trunk/gcc/testsuite/gfortran.dg/read_eof_2.f90
    trunk/gcc/testsuite/gfortran.dg/read_eof_4.f90
    trunk/gcc/testsuite/gfortran.dg/read_many_1.f
    trunk/gcc/testsuite/gfortran.dg/read_noadvance.f90
    trunk/gcc/testsuite/gfortran.dg/read_repeat.f90
    trunk/gcc/testsuite/gfortran.dg/read_size_noadvance.f90
    trunk/gcc/testsuite/gfortran.dg/read_x_past.f
    trunk/gcc/testsuite/gfortran.dg/record_marker_1.f90
    trunk/gcc/testsuite/gfortran.dg/record_marker_3.f90
    trunk/gcc/testsuite/gfortran.dg/rewind_1.f90
    trunk/gcc/testsuite/gfortran.dg/runtime_warning_1.f90
    trunk/gcc/testsuite/gfortran.dg/shape_3.f90
    trunk/gcc/testsuite/gfortran.dg/slash_1.f90
    trunk/gcc/testsuite/gfortran.dg/stat_1.f90
    trunk/gcc/testsuite/gfortran.dg/stat_2.f90
    trunk/gcc/testsuite/gfortran.dg/streamio_11.f90
    trunk/gcc/testsuite/gfortran.dg/streamio_3.f90
    trunk/gcc/testsuite/gfortran.dg/streamio_4.f90
    trunk/gcc/testsuite/gfortran.dg/streamio_9.f90
    trunk/gcc/testsuite/gfortran.dg/tl_editing.f90
    trunk/gcc/testsuite/gfortran.dg/unf_io_convert_1.f90
    trunk/gcc/testsuite/gfortran.dg/unf_io_convert_2.f90
    trunk/gcc/testsuite/gfortran.dg/unf_read_corrupted_2.f90
    trunk/gcc/testsuite/gfortran.dg/unf_short_record_1.f90
    trunk/gcc/testsuite/gfortran.dg/utf8_1.f03
    trunk/gcc/testsuite/gfortran.dg/utf8_2.f03
    trunk/gcc/testsuite/gfortran.dg/widechar_IO_1.f90
    trunk/gcc/testsuite/gfortran.dg/write_check3.f90
    trunk/gcc/testsuite/gfortran.dg/write_rewind_2.f
    trunk/gcc/testsuite/gfortran.dg/x_slash_2.f
    trunk/libgfortran/ChangeLog
    trunk/libgfortran/io/file_pos.c
    trunk/libgfortran/io/intrinsics.c

Comment 3 Jerry DeLisle 2009-05-27 01:22:19 UTC
Subject: Bug 39667

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

Comment 4 Janne Blomqvist 2009-08-25 22:17:47 UTC
Updated patch fixing remaining fd_truncate issues with testsuite.
Comment 5 Janne Blomqvist 2009-08-27 17:41:17 UTC
Subject: Bug 39667

Author: jb
Date: Thu Aug 27 17:40:55 2009
New Revision: 151144

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=151144
Log:
PR libfortran/39667 Fix testcases to not need fd_truncate.

Modified:
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/f2003_io_4.f03
    trunk/gcc/testsuite/gfortran.dg/fmt_cache_1.f
    trunk/gcc/testsuite/gfortran.dg/fmt_exhaust.f90
    trunk/gcc/testsuite/gfortran.dg/fmt_t_4.f90
    trunk/gcc/testsuite/gfortran.dg/fseek.f90
    trunk/gcc/testsuite/gfortran.dg/list_read_5.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_39.f90
    trunk/gcc/testsuite/gfortran.dg/namelist_56.f90
    trunk/gcc/testsuite/gfortran.dg/read_bad_advance.f90
    trunk/gcc/testsuite/gfortran.dg/read_repeat.f90
    trunk/gcc/testsuite/gfortran.dg/read_size_noadvance.f90
    trunk/gcc/testsuite/gfortran.dg/read_x_past.f

Comment 6 Janne Blomqvist 2009-08-28 14:48:18 UTC
Closing as fixed