Skip to content
Snippets Groups Projects
  1. Dec 06, 2006
    • tkoenig's avatar
      2006-12-06 Thomas Koenig <Thomas.Koenig@online.de> · 71b43437
      tkoenig authored
      	PR libfortran/30009
      	PR libfortran/30056
      	* gfortran.dg/read_eof_4.f90:  Add tests.
      	* gfortran.dg/readwrite_unf_direct_eor_1.f90:  New test.
      	* gfortran.dg/unf_read_corrupted_1.f90: New test.
      
      2006-12-06  Thomas Koenig  <Thomas.Koenig@online.de>
      
      	PR libfortran/30009
      	PR libfortran/30056
      	* libgfortran.h:  Add ERROR_CORRUPT_FILE to error_codes.
      	* runtime/error.c (translate_error):  Add handling for
      	ERROR_CORRUPT_FILE.
      	* io/transfer.c (read_block_direct):  Add comment about
      	EOR for stream files.
      	Remove test for no bytes left for direct access files.
      	Generate an ERROR_SHORT_RECORD if the read was short.
      	For unformatted sequential files:  Check endfile condition.
      	Remove test for no bytes left.  End of file here means
      	that the file structure has been corrupted.  Pre-position
      	the file for the next record in case of error.
      	(write_buf):  Whitespace fix.  Subtract the number of bytes
      	written from bytes_left.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119592 138bc75d-0d04-0410-961f-82ee72b054a4
      71b43437
  2. Dec 01, 2006
    • tkoenig's avatar
      2006-12-01 Thomas Koenig <Thomas.Koenig@online.de> · bbaaa7b1
      tkoenig authored
      	PR libfortran/29568
      	* gfortran.dg/convert_implied_open.f90:  Change to
      	new default record length.
      	* gfortran.dg/unf_short_record_1.f90:  Adapt to
      	new error message.
      	* gfortran.dg/unformatted_subrecords_1.f90:  New test.
      
      2006-12-01  Thomas Koenig  <Thomas.Koenig@online.de>
      
      	PR libfortran/29568
      	* gfortran.h (gfc_option_t):  Add max_subrecord_length.
      	(top level): Define MAX_SUBRECORD_LENGTH.
      	* lang.opt:  Add option -fmax-subrecord-length=.
      	* trans-decl.c:  Add new function set_max_subrecord_length.
      	(gfc_generate_function_code): If we are within the main
      	program and max_subrecord_length has been set, call
      	set_max_subrecord_length.
      	* options.c (gfc_init_options):  Add defaults for
      	max_subrecord_lenght, convert and record_marker.
      	(gfc_handle_option):  Add handling for
      	-fmax_subrecord_length.
      	* invoke.texi:  Document the new default for
      	-frecord-marker=<n>.
      
      2006-12-01  Thomas Koenig  <Thomas.Koenig@online.de>
      
      	PR libfortran/29568
      	* libgfortran/libgfortran.h (compile_options_t):  Add
      	record_marker. (top level):  Define GFC_MAX_SUBRECORD_LENGTH.
      	* runtime/compile_options.c (set_record_marker):  Change
      	default to four-byte record marker.
      	(set_max_subrecord_length):  New function.
      	* runtime/error.c (translate_error):  Change error message
      	for short record on unformatted read.
      	* io/io.h (gfc_unit):  Add recl_subrecord, bytes_left_subrecord
      	and continued.
      	* io/file_pos.c (unformatted_backspace):  Change default of record
      	marker size to four bytes.  Loop over subrecords.
      	* io/open.c:  Default recl is max_offset.  If
      	compile_options.max_subrecord_length has been set, set set
      	u->recl_subrecord to its value, to the maximum value otherwise.
      	* io/transfer.c (top level):  Add prototypes for us_read, us_write,
      	next_record_r_unf and next_record_w_unf.
      	(read_block_direct):  Separate codepaths for unformatted direct
      	and unformatted sequential.  If a recl has been set by the
      	user, use the number of bytes left for the record if it is smaller
      	than the read request.  Loop over subrecords.  Set an error if the
      	user has set a recl and the read was short.
      	(write_buf):  Separate codepaths for unformatted direct and
      	unformatted sequential. If a recl has been set by the
      	user, use the number of bytes left for the record if it is smaller
      	than the read request.  Loop over subrecords.  Set an error if the
      	user has set a recl and the read was short.
      	(us_read):  Add parameter continued (to indicate that bytes_left
      	should not be intialized).  Change default of record marker size
      	to four bytes. Use subrecord.  If the subrecord length is smaller than
      	zero, this indicates a continuation.
      	(us_write):  Add parameter continued (to indicate that the continued
      	flag should be set).  Use subrecord.
      	(pre_position):  Use 0 for continued on us_write and us_read calls.
      	(skip_record):  New function.
      	(next_record_r_unf):  New function.
      	(next_record_r):  Use next_record_r_unf.
      	(write_us_marker):  Default size for record markers is four bytes.
      	(next_record_w_unf):  New function.
      	(next_record_w):  Use next_record_w_unf.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119412 138bc75d-0d04-0410-961f-82ee72b054a4
      bbaaa7b1
  3. Oct 31, 2006
    • tkoenig's avatar
      2006-10-31 Thomas Koenig <Thomas.Koenig@online.de> · c0e176b5
      tkoenig authored
      	PR libfortran/29627
      	* libgfortran.h: Add ERROR_SHORT_RECORD
      	* runtime/error.c (translate_error): Add case
      	for ERROR_SHORT_RECORD.
      	* io/transfer.c (read_block_direct):  Separate codepaths
      	for stream and record unformatted I/O.  Remove unneeded
      	tests for standard input, padding and formatted I/O.
      	If the record is short, read in as much data as possible,
      	then raise the error.
      
      2006-10-31  Thomas Koenig  <Thomas.Koenig@online.de>
      
      	PR libfortran/29627
      	* gfortran.dg/unf_short_record_1.f90:  New test.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118341 138bc75d-0d04-0410-961f-82ee72b054a4
      c0e176b5
  4. Oct 21, 2006
  5. Oct 01, 2006
  6. Aug 15, 2006
    • jvdelisle's avatar
      2006-08-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> · 4d8ee55b
      jvdelisle authored
      	PR libgfortran/25828
      	* libgfortran.h: Rename GFC_LARGE_IO_INT to GFC_IO_INT.
      	* io/file_pos.c (st_backspace): Ignore if access=STREAM.
      	(st_rewind): Handle case of access=STREAM.
      	* io/open.c (access_opt): Add STREAM_ACCESS.
      	(edit_modes): Set current_record to zero only if not STREAM.
      	(new_unit): Initialize maxrec, recl, and last_record for STREAM.
      	* io/read.c (read_x): Advance file position for STREAM.
      	* io/io.h (enum unit_access): Align IOPARM flags with frontend.
      	Add ACCESS_STREAM. Add prototype for is_stream_io () function.
      	Use GFC_IO_INT.
      	* io/inquire.c (inquire_via_unit): Add text for access = "STREAM".
      	* io/unit.c (is_stream_io): New function to return true if access =
      	STREAM.
      	* io/transfer.c (file_mode): Add modes for unformatted stream and
      	formatted stream. (current_mode): Return appropriate file mode based
      	on access flags.
      	(read_block): Handle formatted stream reads.
      	(read_block_direct): Handle unformatted stream reads.
      	(write_block): Handle formatted stream writes.
      	(write_buf): Handle unformatted stream writes.
      	(unformatted_read): Fix up, use temporary for size.
      	(pre_position): Position file for STREAM access.
      	(data_transfer_init): Initialize for stream access, skip irrelevent
      	error checks.
      	(next_record_r),(next_record_w), and (next_record): Do nothing for
      	stream I/O.
      	(finalize_transfer): Flush when all done if stream I/O.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116172 138bc75d-0d04-0410-961f-82ee72b054a4
      4d8ee55b
  7. Aug 01, 2006
    • tkoenig's avatar
      2006-08-01 Thomas Koenig <Thomas.Koenig@online.de> · 0ee93d57
      tkoenig authored
      	PR libfortran/28542
      	* Makefile.am:  Remove normalize.c.
      	* aclocal.m4:  Regenerate using aclocal 1.9.3.
      	* Makefile.in:  Regenerate using automake 1.9.3.
      	* libgfortran.h:  #include <float.h>.
      	Define GFC_REAL_*_DIGITS and GFC_REAL_*_RADIX.
      	Remove prototypes for normalize_r4_i4 and normalize_r8_i8.
      	* intrinsics/random.c (top level): Add prototypes for
      	random_r10, arandom_r10, random_r16 and arandom_r16.
      	(rnumber_4):  New static function.
      	(rnumber_8):  New static function.
      	(rnumber_10): New static function.
      	(rnumber_16): New static function.
      	(top level):  Set to kiss_size to 12 if we have
      	REAL(KIND=16), to 8 otherwise.
      	Define KISS_DEFAULT_SEED_1, KISS_DEFAULT_SEED_2 and
      	KISS_DEFAULT_SEED_3.
      	(kiss_random_kernel):  Take argument to differentiate
      	between different random number generators.
      	(random_r4):  Add argument to call to kiss_random_kernel,
      	use rnumber_*.
      	(random_r8):  Likewise.
      	(random_r10):  New function.
      	(random_r16):  New function.
      	(arandom_r4):  Add argument to call to kiss_random_kernel,
      	use_rnumber_*.
      	(arandom_r8):  Likewise.
      	(arandom_r10):  New function.
      	(arandom_r16):  New function.
      	* intrinsics/rand.c (rand):  Use shift and mask.
      	* runtime/normalize.c:  Remove.
      
      2006-08-01  Thomas Koenig  <Thomas.Koenig@online.de>
      
      	PR libfortran/28542
      	* gfortran.dg/random_3.f90:  New test.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115858 138bc75d-0d04-0410-961f-82ee72b054a4
      0ee93d57
  8. Jul 24, 2006
  9. Jul 04, 2006
    • jvdelisle's avatar
      2006-07-03 Jerry DeLisle <jvdelisle@gcc.gnu.org> · 02183b45
      jvdelisle authored
      	PR libgfortran/27704
      	* runtime/error.c (notify_std): Pass common flags into function. Use
      	flags to show locus of error or warning.
      	* libgfortran.h: Add enum try.  Add prototype for notify_std.
      	* io/open.c (edit_modes): Allow status="old" and add extension to
      	allow status="scratch"
      	*io/list_read.c (nml_read_obj): Update call to notify_std.
      	*io/io.h: Remove enum try and prototype for notify_std.
      	*io/transfer.c (read_sf): Update call to notify_std.
      	*io/format.c (parse_format_list): Update call to notify_std.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115168 138bc75d-0d04-0410-961f-82ee72b054a4
      02183b45
  10. Jun 25, 2006
  11. Mar 22, 2006
    • tkoenig's avatar
      2006-03-22 Thomas Koenig <Thomas.Koenig@onlien.de> · f23886ab
      tkoenig authored
      	PR fortran/19303
      	* gfortran.h (gfc_option_t):  Add record_marker.
      	* lang.opt:  Add -frecord-marker=4 and -frecord-marker=8.
      	* trans-decl.c:  Add gfor_fndecl_set_record_marker.
      	(gfc_build_builtin_function_decls): Set
      	gfor_fndecl_set_record_marker.
      	(gfc_generate_function_code):  If we are in the main program
      	and -frecord-marker was provided, call set_record_marker.
      	* options.c (gfc_handle_option):  Add handling for
      	-frecord-marker=4 and -frecord-marker=8.
      	* invoke.texi:  Document -frecord-marker.
      
      2006-03-22  Thomas Koenig  <Thomas.Koenig@onlien.de>
      
      	PR fortran/19303
      	* libgfortran.h (compile_options_t):  Add record_marker.
      	* runtime/compile_options.c (set_record_marker):
      	New function.
      	* io/open.c:  If we have four-byte record markers, use
      	GFC_INTEGER_4_HUGE as default record length.
      	* io/file_pos.c (unformatted_backspace):  Handle
      	different size record markers.
      	* io/transfer.c (us_read):  Likewise.
      	(us_write):  Likewise.
      	(next_record_r):  Likewise.
      	(write_us_marker):  Likewise.
      	(next_record_w):  Likewise.
      
      2006-03-22  Thomas Koenig  <Thomas.Koenig@online.de>
      
      	PR fortran/19303
      	* gfortran.dg/record_marker_1.f90:  New test case.
      	* gfortran.dg/record_marker_2.f:  New test case.
      	* gfortran.dg/record_marker_3.f90:  New test case.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112290 138bc75d-0d04-0410-961f-82ee72b054a4
      f23886ab
  12. Mar 18, 2006
  13. Mar 03, 2006
    • tkoenig's avatar
      2006-03-03 Thomas Koenig <Thomas.Koenig@online.de> · 8a92488f
      tkoenig authored
      	PR fortran/25031
      	* trans-array.h:  Adjust gfc_array_allocate prototype.
      	* trans-array.c (gfc_array_allocate):  Change type of
      	gfc_array_allocatate to bool.  Function returns true if
      	it operates on an array.  Change second argument to gfc_expr.
      	Find last reference in chain.
      	If the function operates on an allocatable array, emit call to
      	allocate_array() or allocate64_array().
      	* trans-stmt.c (gfc_trans_allocate):  Code to follow to last
      	reference has been moved to gfc_array_allocate.
      	* trans.h:  Add declaration for gfor_fndecl_allocate_array and
      	gfor_fndecl_allocate64_array.
      	(gfc_build_builtin_function_decls):  Add gfor_fndecl_allocate_array
      	and gfor_fndecl_allocate64_array.
      
      2006-03-03  Thomas Koenig  <Thomas.Koenig@online.de>
      
      	PR fortran/25031
      	* runtime/memory.c:  Adjust copyright years.
      	(allocate_array):  New function.
      	(allocate64_array):  New function.
      	* libgfortran.h (error_codes):  Add ERROR_ALLOCATION.
      
      2006-03-03  Thomas Koenig  <Thomas.Koenig@online.de>
      
      	PR fortran/25031
      	* multiple_allocation_1.f90:  New test.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111677 138bc75d-0d04-0410-961f-82ee72b054a4
      8a92488f
  14. Feb 19, 2006
    • fxcoudert's avatar
      PR libfortran/21303 · 158f58e7
      fxcoudert authored
      	* gfortran.h (notification): New enumeration.
      	(gfc_notification_std): Prototype for the new function.
      	* error.c (gfc_notification_std): New function.
      	* io.c (check_format): Handle the case of a L format descriptor
      	without a width.
      
      	* runtime/error.c (notification_std): New function.
      	* libgfortran.h (notification): New enumeration.
      	* io/io.h (notification_std): Prototype for the new function. 
      	* io/format.c (parse_format_list): Handle the case of a L format
      	descriptor without a width.
      
      	* gcc/testsuite/gfortran.dg/fmt_l.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111281 138bc75d-0d04-0410-961f-82ee72b054a4
      158f58e7
  15. Feb 08, 2006
    • fxcoudert's avatar
      PR libfortran/25425 · 7833ddd7
      fxcoudert authored
      	* trans-decl.c (gfc_generate_function_code): Add new argument,
      	pedantic, to set_std call.
      
      	* libgfortran.h: Add pedantic field to compile_options struct.
      	* io/write.c (calculate_G_format): Depending on the standard,
      	choose E or F format for list-directed output of 0.0.
      	* runtime/error.c (notify_std): Make warning and error dependent
      	on pedanticity.
      	* runtime/compile_options.c (set_std): Use new pedantic argument.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110769 138bc75d-0d04-0410-961f-82ee72b054a4
      7833ddd7
  16. Feb 06, 2006
    • tkoenig's avatar
      2005-02-06 Thomas Koenig <Thomas.Koenig@online.de> · 15774a8b
      tkoenig authored
      	PR libfortran/23815
      	* gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment
      	variable.
      	* invoke.texi:  Mention the "Runtime" chapter.
      	Document the -fconvert= option.
      	* gfortran.h:  Add options_convert.
      	* lang.opt:  Add fconvert=little-endian, fconvert=big-endian,
      	fconvert=native and fconvert=swap.
      	* trans-decl.c (top level):  Add gfor_fndecl_set_convert.
      	(gfc_build_builtin_function_decls):  Set gfor_fndecl_set_convert.
      	(gfc_generate_function_code):  If -fconvert was specified,
      	and this is the main program, add a call to set_convert().
      	* options.c:  Handle the -fconvert options.
      
      2005-02-06  Thomas Koenig  <Thomas.Koenig@online.de>
      
      	PR libfortran/23815
      	* runtime/environ.c (init_unformatted):  Add GFORTRAN_CONVERT_UNIT
      	environment variable.
      	(top level):  Add defines, type and static variables for
      	GFORTRAN_CONVERT_UNIT handling.
      	(search_unit):  New function.
      	(match_word): New function.
      	(match_integer): New function.
      	(next_token): New function.
      	(push_token): New function.
      	(mark_single): New function.
      	(mark_range): New funciton.
      	(do_parse): New function.
      	(init_unformatted): New function.
      	(get_unformatted_convert): New function.
      	* runtime/compile_options.c:  Add set_convert().
      	* libgfortran.h:  Add convert to compile_options_t.
      	* io/open.c (st_open): Call get_unformatted_convert to get
      	unit default; if CONVERT_NONE is returned, check for
      	the presence of a CONVERT specifier and use it.
      	As default, use compile_options.convert.
      	* io/io.h (top level): Add CONVERT_NONE to unit_convert, to signal
      	"nothing has been set".
      	(top level): Add prototype for get_unformatted_convert.
      
      2005-02-06  Thomas Koenig  <Thomas.Koenig@online.de>
      
      	PR libfortran/23815
      	* unf_io_convert_4.f90:  New test.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110664 138bc75d-0d04-0410-961f-82ee72b054a4
      15774a8b
  17. Jan 02, 2006
    • bonzini's avatar
      config: · 56c15991
      bonzini authored
      2006-01-02  Paolo Bonzini  <bonzini@gnu.org>
      
      	PR target/25259
      	* stdint.m4: New.
      
      gcc:
      2006-01-02  Paolo Bonzini  <bonzini@gnu.org>
      
      	PR target/25259
      	* Makefile.in (DECNUMINC): Include libdecnumber's build directory.
      
      libgfortran:
      2006-01-02  Paolo Bonzini  <bonzini@gnu.org>
      
      	PR target/25259
      	* configure.ac: Use GCC_HEADER_STDINT.
      	* libgfortran.h: Include gstdint.h.
      	* aclocal.m4: Regenerate.
      	* configure: Regenerate.
      
      libdecnumber:
      2006-01-02  Paolo Bonzini  <bonzini@gnu.org>
      
      	PR target/25259
      	* configure.ac: Use GCC_HEADER_STDINT.
      	* decContext.h: Include gstdint.h.
      	* aclocal.m4: Regenerate.
      	* configure: Regenerate.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109241 138bc75d-0d04-0410-961f-82ee72b054a4
      56c15991
  18. Dec 28, 2005
    • jvdelisle's avatar
      2005-12-28 Jerry DeLisle <jvdelisle@gcc.gnu.org> · 8c39329b
      jvdelisle authored
      	PR libgfortran/25139
      	* io/unix.c (fd_truncate): Set s->active to zero.
      	PR libgfortran/25510
      	* libgfortran.h: Add ERROR_INTERNAL and ERROR_INTERNAL_UNIT.
      	* runtime/error.c (translate_error): Add messages for new errors.
      	* io/list_read.c (next_char): Use new errors.
      	* io/transfer.c (next_record_r) (next_record_w): Use new errors.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109122 138bc75d-0d04-0410-961f-82ee72b054a4
      8c39329b
  19. Nov 30, 2005
  20. Nov 21, 2005
    • jakub's avatar
      gcc/fortran/ · 60c514ba
      jakub authored
      	PR fortran/14943
      	PR fortran/21647
      	* Make-lang.in (fortran/trans-io.o): Depend on fortran/ioparm.def.
      	* dump-parse-tree.c (gfc_show_code_node): Dump c->block for
      	EXEC_{READ,WRITE,IOLENGTH} nodes.
      	* io.c (terminate_io, match_io, gfc_match_inquire): Put data
      	transfer commands into EXEC_{READ,WRITE,IOLENGTH}'s code->block.
      	* resolve.c (resolve_blocks): Handle EXEC_{READ,WRITE,IOLENGTH}.
      	* trans-io.c (ioparm_unit, ioparm_err, ioparm_end, ioparm_eor,
      	ioparm_list_format, ioparm_library_return, ioparm_iostat,
      	ioparm_exist, ioparm_opened, ioparm_number, ioparm_named,
      	ioparm_rec, ioparm_nextrec, ioparm_size, ioparm_recl_in,
      	ioparm_recl_out, ioparm_iolength, ioparm_file, ioparm_file_len,
      	ioparm_status, ioparm_status_len, ioparm_access, ioparm_access_len,
      	ioparm_form, ioparm_form_len, ioparm_blank, ioparm_blank_len,
      	ioparm_position, ioparm_position_len, ioparm_action,
      	ioparm_action_len, ioparm_delim, ioparm_delim_len, ioparm_pad,
      	ioparm_pad_len, ioparm_format, ioparm_format_len, ioparm_advance,
      	ioparm_advance_len, ioparm_name, ioparm_name_len,
      	ioparm_internal_unit, ioparm_internal_unit_len,
      	ioparm_internal_unit_desc, ioparm_sequential, ioparm_sequential_len,
      	ioparm_direct, ioparm_direct_len, ioparm_formatted,
      	ioparm_formatted_len, ioparm_unformatted, ioparm_unformatted_len,
      	ioparm_read, ioparm_read_len, ioparm_write, ioparm_write_len,
      	ioparm_readwrite, ioparm_readwrite_len, ioparm_namelist_name,
      	ioparm_namelist_name_len, ioparm_namelist_read_mode, ioparm_iomsg,
      	ioparm_iomsg_len, ioparm_var): Remove.
      	(enum ioparam_type, enum iofield_type, enum iofield,
      	enum iocall): New enums.
      	(gfc_st_parameter_field, gfc_st_parameter): New typedefs.
      	(st_parameter, st_parameter_field, iocall): New variables.
      	(ADD_FIELD, ADD_STRING): Remove.
      	(dt_parm, dt_post_end_block): New variables.
      	(gfc_build_st_parameter): New function.
      	(gfc_build_io_library_fndecls): Use it.  Initialize iocall
      	array rather than ioparm_*, add extra first arguments to
      	the function types.
      	(set_parameter_const): New function.
      	(set_parameter_value): Add type argument, return a bitmask.
      	Changed to set a field in automatic structure variable rather
      	than set a field in a global _gfortran_ioparm variable.
      	(set_parameter_ref): Likewise.  If requested var has different
      	size than what field should point to, call with a temporary and
      	then copy into the user variable.  Add postblock argument.
      	(set_string): Remove var_len argument, add type argument, return
      	a bitmask.  Changed to set fields in automatic structure variable
      	rather than set a field in a global _gfortran_ioparm variable.
      	(set_internal_unit): Remove iunit, iunit_len, iunit_desc arguments,
      	add var argument.  Return a bitmask.  Changed to set fields in
      	automatic structure variable rather than set a field in a global
      	_gfortran_ioparm variable.
      	(set_flag): Removed.
      	(io_result): Add var argument.  Changed to read common.flags field
      	from automatic structure variable and bitwise AND it with 3.
      	(set_error_locus): Add var argument.  Changed to set fields in
      	automatic structure variable rather than set a field in a global
      	_gfortran_{filename,line} variables.
      	(gfc_trans_open): Use gfc_start_block rather than gfc_init_block.
      	Create a temporary st_parameter_* structure.  Adjust callers of
      	all above mentioned functions.  Pass address of the temporary
      	variable as first argument to the generated function call.
      	Use iocall array rather than ioparm_* separate variables.
      	(gfc_trans_close, build_filepos, gfc_trans_inquire): Likewise.
      	(build_dt): Likewise.  Change first argument to tree from tree *.
      	Don't dereference code->ext.dt if last_dt == INQUIRE.  Emit
      	IOLENGTH argument setup here.  Set dt_parm/dt_post_end_block
      	variables and gfc_trans_code the nested data transfer commands
      	in code->block.
      	(gfc_trans_iolength): Just set last_dt and call build_dt immediately.
      	(transfer_namelist_element): Pass address of dt_parm variable
      	to generated functions.  Use iocall array rather than ioparm_*
      	separate variables.
      	(gfc_trans_backspace, gfc_trans_endfile, gfc_trans_rewind,
      	gfc_trans_flush, gfc_trans_read, gfc_trans_write): Use iocall array
      	rather than ioparm_* separate variables.
      	(gfc_trans_dt_end): Likewise.  Pass address of dt_parm variable
      	as first argument to generated function.  Adjust io_result caller.
      	Prepend dt_post_end_block before io_result code.
      	(transfer_expr): Use iocall array rather than ioparm_* separate
      	variables.  Pass address of dt_parm variables as first argument
      	to generated functions.
      	* ioparm.def: New file.
      gcc/testsuite/
      	PR fortran/24774
      	* gfortran.dg/inquire_9.f90: New test.
      
      	PR fortran/21647
      	* gfortran.fortran-torture/execute/inquire_5.f90: New test.
      libgfortran/
      	PR fortran/24774
      	PR fortran/14943
      	PR fortran/21647
      	* Makefile.am (AM_CPPFLAGS): Add gcc directories as -I paths,
      	add -D_GNU_SOURCE.
      	* Makefile.in: Regenerated.
      	* acinclude.m4 (LIBGFOR_CHECK_SYNC_FETCH_AND_ADD,
      	LIBGFOR_CHECK_GTHR_DEFAULT, LIBGFOR_CHECK_PRAGMA_WEAK): New macros.
      	* configure.ac: Add them.
      	* configure: Rebuilt.
      	* config.h.in: Rebuilt.
      	* libtool-version: Bump libgfortran.so SONAME to libgfortran.so.1.
      	* libgfortran.h (library_start, show_locus, internal_error,
      	generate_error, find_option): Add st_parameter_common * argument.
      	(library_end): Change into a dummy macro.
      	* io/io.h: Include gthr.h.
      	(SUPPORTS_WEAK): Define if HAVE_PRAGMA_WEAK.
      	(CHARACTER): Remove define.
      	(st_parameter, global_t): Remove typedef.
      	(ioparm, g, ionml, current_unit): Remove variables.
      	(init_error_stream): Remove prototype.
      	(CHARACTER1, CHARACTER2): Define.
      	(st_parameter_common, st_parameter_open, st_parameter_close,
      	st_parameter_filepos, st_parameter_inquire, st_parameter_dt): New
      	typedefs.
      	(IOPARM_LIBRETURN_MASK, IOPARM_LIBRETURN_OK, IOPARM_LIBRETURN_ERROR,
      	IOPARM_LIBRETURN_END, IOPARM_LIBRETURN_EOR, IOPARM_ERR, IOPARM_END,
      	IOPARM_EOR, IOPARM_HAS_IOSTAT, IOPARM_HAS_IOMSG, IOPARM_COMMON_MASK,
      	IOPARM_OPEN_HAS_RECL_IN, IOPARM_OPEN_HAS_FILE, IOPARM_OPEN_HAS_STATUS,
      	IOPARM_OPEN_HAS_ACCESS, IOPARM_OPEN_HAS_FORM, IOPARM_OPEN_HAS_BLANK,
      	IOPARM_OPEN_HAS_POSITION, IOPARM_OPEN_HAS_ACTION,
      	IOPARM_OPEN_HAS_DELIM, IOPARM_OPEN_HAS_PAD, IOPARM_CLOSE_HAS_STATUS,
      	IOPARM_INQUIRE_HAS_EXIST, IOPARM_INQUIRE_HAS_OPENED,
      	IOPARM_INQUIRE_HAS_NUMBER, IOPARM_INQUIRE_HAS_NAMED,
      	IOPARM_INQUIRE_HAS_NEXTREC, IOPARM_INQUIRE_HAS_RECL_OUT,
      	IOPARM_INQUIRE_HAS_FILE, IOPARM_INQUIRE_HAS_ACCESS,
      	IOPARM_INQUIRE_HAS_FORM, IOPARM_INQUIRE_HAS_BLANK,
      	IOPARM_INQUIRE_HAS_POSITION, IOPARM_INQUIRE_HAS_ACTION,
      	IOPARM_INQUIRE_HAS_DELIM, IOPARM_INQUIRE_HAS_PAD,
      	IOPARM_INQUIRE_HAS_NAME, IOPARM_INQUIRE_HAS_SEQUENTIAL,
      	IOPARM_INQUIRE_HAS_DIRECT, IOPARM_INQUIRE_HAS_FORMATTED,
      	IOPARM_INQUIRE_HAS_UNFORMATTED, IOPARM_INQUIRE_HAS_READ,
      	IOPARM_INQUIRE_HAS_WRITE, IOPARM_INQUIRE_HAS_READWRITE,
      	IOPARM_DT_LIST_FORMAT, IOPARM_DT_NAMELIST_READ_MODE,
      	IOPARM_DT_HAS_REC, IOPARM_DT_HAS_SIZE, IOPARM_DT_HAS_IOLENGTH,
      	IOPARM_DT_HAS_FORMAT, IOPARM_DT_HAS_ADVANCE,
      	IOPARM_DT_HAS_INTERNAL_UNIT, IOPARM_DT_HAS_NAMELIST_NAME,
      	IOPARM_DT_IONML_SET): Define.
      	(gfc_unit): Add lock, waiting and close fields.  Change file
      	from flexible array member into pointer to char.
      	(open_external): Add st_parameter_open * argument.
      	(find_file, file_exists): Add file and file_len arguments.
      	(flush_all_units): New prototype.
      	(max_offset, unit_root, unit_lock): New variable.
      	(is_internal_unit, is_array_io, next_array_record,
      	parse_format, next_format, unget_format, format_error,
      	read_block, write_block, next_record, convert_real,
      	read_a, read_f, read_l, read_x, read_radix, read_decimal,
      	list_formatted_read, finish_list_read, namelist_read,
      	namelist_write, write_a, write_b, write_d, write_e, write_en,
      	write_es, write_f, write_i, write_l, write_o, write_x, write_z,
      	list_formatted_write, get_unit): Add st_parameter_dt * argument.
      	(insert_unit): Remove prototype.
      	(find_or_create_unit, unlock_unit): New prototype.
      	(new_unit): Return gfc_unit *.  Add st_parameter_open *
      	and gfc_unit * arguments.
      	(free_fnodes): Remove prototype.
      	(free_format_data): New prototype.
      	(scratch): Remove.
      	(init_at_eol): Remove prototype.
      	(free_ionml): New prototype.
      	(inc_waiting_locked, predec_waiting_locked, dec_waiting_unlocked):
      	New inline functions.
      	* io/unit.c (max_offset, unit_root, unit_lock): New variables.
      	(insert): Adjust os_error caller.
      	(insert_unit): Made static.  Allocate memory here, initialize
      	lock and after inserting it return it, locked.
      	(delete_unit): Adjust for deletion of g.
      	(find_unit_1): New function.
      	(find_unit): Use it.
      	(find_or_create_unit): New function.
      	(get_unit): Add dtp argument, change meaning of the int argument
      	as creation request flag.  Adjust for different st_* calling
      	conventions, lock internal unit's lock before returning it
      	and removal of g.  Call find_unit_1 instead of find_unit.
      	(is_internal_unit, is_array_io): Add dtp argument, adjust for
      	removal of most of global variables.
      	(init_units): Initialize unit_lock.  Adjust insert_unit callers
      	and adjust for g removal.
      	(close_unit_1): New function.
      	(close_unit): Use it.
      	(unlock_unit): New function.
      	(close_units): Lock unit_lock, use close_unit_1 rather than
      	close_unit.
      	* io/close.c (st_close): Add clp argument.  Adjust for new
      	st_* calling conventions and internal function API changes.
      	* io/file_pos.c (st_backspace, st_endfile, st_rewind, st_flush):
      	Add fpp argument.  Adjust for new st_* calling conventions and
      	internal function API changes.
      	(formatted_backspace, unformatted_backspace): Likewise.  Add
      	u argument.
      	* io/open.c (edit_modes, st_open): Add opp argument.  Adjust for
      	new st_* calling conventions and internal function API changes.
      	(already_open): Likewise.  If not HAVE_UNLINK_OPEN_FILE, unlink
      	scratch file.  Instead of calling close_unit just call sclose,
      	free u->file if any and clear a few u fields before calling
      	new_unit.
      	(new_unit): Return gfc_unit *.  Add opp and u arguments.
      	Adjust for new st_* calling conventions and internal function
      	API changes.  Don't allocate unit here, rather than work with
      	already created unit u already locked on entry.  In case
      	of failure, close_unit it.
      	* io/unix.c: Include unix.h.
      	(BUFFER_SIZE, unix_stream): Moved to unix.h.
      	(unit_to_fd): Add unlock_unit call.
      	(tempfile): Add opp argument, use its fields rather than ioparm.
      	(regular_file): Likewise.
      	(open_external): Likewise.  Only unlink file if fd >= 0.
      	(init_error_stream): Add error argument, set structure it points
      	to rather than filling static variable and returning its address.
      	(FIND_FILE0_DECL, FIND_FILE0_ARGS): Define.
      	(find_file0): Use them.  Don't crash if u->s == NULL.
      	(find_file): Add file and file_len arguments, use them instead
      	of ioparm.  Add locking.  Pass either an array of 2 struct stat
      	or file and file_len pair to find_file0.
      	(flush_all_units_1, flush_all_units): New functions.
      	(file_exists): Add file and file_len arguments, use them instead
      	of ioparm.
      	* io/unix.h: New file.
      	* io/lock.c (ioparm, g, ionml): Remove variables.
      	(library_start): Add cmp argument, adjust for new st_* calling
      	conventions.
      	(library_end): Remove.
      	(free_ionml): New function.
      	* io/inquire.c (inquire_via_unit, inquire_via_filename,
      	st_inquire): Add iqp argument, adjust for new st_* calling
      	conventions and internal function API changes.
      	* io/format.c (FARRAY_SIZE): Decrease to 64.
      	(fnode_array, format_data): New typedefs.
      	(avail, array, format_string, string, error, saved_token, value,
      	format_string_len, reversion_ok, saved_format): Remove variables.
      	(colon_node): Add const.
      	(free_fnode, free_fnodes): Remove.
      	(free_format_data): New function.
      	(next_char, unget_char, get_fnode, format_lex, parse_format_list,
      	format_error, parse_format, revert, unget_format, next_test): Add
      	fmt or dtp arguments, pass it all around, adjust for internal
      	function API changes and adjust for removal of global variables.
      	(next_format): Likewise.  Constify return type.
      	(next_format0): Constify return type.
      	* io/transfer.c (current_unit, sf_seen_eor, eor_condition, max_pos,
      	skips, pending_spaces, scratch, line_buffer, advance_status,
      	transfer): Remove variables.
      	(transfer_integer, transfer_real, transfer_logical,
      	transfer_character, transfer_complex, transfer_array, current_mode,
      	read_sf, read_block, read_block_direct, write_block,
      	write_block_direct, unformatted_read, unformatted_write,
      	type_name, write_constant_string, require_type,
      	formatted_transfer_scalar, us_read, us_write, pre_position,
      	data_transfer_init, next_record_r, next_record_w, next_record,
      	finalize_transfer, iolength_transfer, iolength_transfer_init,
      	st_iolength, st_iolength_done, st_read, st_read_done, st_write,
      	st_write_done, st_set_nml_var, st_set_nml_var_dim,
      	next_array_record): Add dtp argument, pass it all around, adjust for
      	internal function API changes and removal of global variables.
      	* io/list_read.c (repeat_count, saved_length, saved_used,
      	input_complete, at_eol, comma_flag, last_char, saved_string,
      	saved_type, namelist_mode, nml_read_error, value, parse_err_msg,
      	nml_err_msg, prev_nl): Remove variables.
      	(push_char, free_saved, next_char, unget_char, eat_spaces,
      	eat_separator, finish_separator, nml_bad_return, convert_integer,
      	parse_repeat, read_logical, read_integer, read_character,
      	parse_real, read_complex, read_real, check_type,
      	list_formatted_read_scalar, list_formatted_read, finish_list_read,
      	find_nml_node, nml_untouch_nodes, nml_match_name, nml_query,
      	namelist_read): Add dtp argument, pass it all around, adjust for
      	internal function API changes and removal of global variables.
      	(nml_parse_qualifier): Likewise.  Add parse_err_msg argument.
      	(nml_read_obj): Likewise.  Add pprev_nl, nml_err_msg, clow and
      	chigh arguments.
      	(nml_get_obj_data): Likewise.  Add pprev_nl and nml_err_msg
      	arguments.
      	(init_at_eol): Removed.
      	* io/read.c (convert_real, read_l, read_a, next_char, read_decimal,
      	read_radix, read_f, read_x): Add dtp argument, pass it all around,
      	adjust for internal function API changes and removal of global
      	variables.
      	(set_integer): Adjust internal_error caller.
      	* io/write.c (no_leading_blank, nml_delim): Remove variables.
      	(write_a, calculate_sign, calculate_G_format, output_float,
      	write_l, write_float, write_int, write_decimal, write_i, write_b,
      	write_o, write_z, write_d, write_e, write_f, write_en, write_es,
      	write_x, write_char, write_logical, write_integer, write_character,
      	write_real, write_complex, write_separator,
      	list_formatted_write_scalar, list_formatted_write, nml_write_obj,
      	namelist_write): Add dtp argument, pass it all around, adjust for
      	internal function API changes and removal of global variables.
      	(extract_int, extract_uint, extract_real): Adjust internal_error
      	callers.
      	* runtime/fpu.c (_GNU_SOURCE): Don't define here.
      	* runtime/error.c: Include ../io/unix.h.
      	(filename, line): Remove variables.
      	(st_printf): Pass address of a local variable to init_error_stream.
      	(show_locus): Add cmp argument.  Use fields it points to rather than
      	filename and line variables.
      	(os_error, runtime_error): Remove show_locus calls.
      	(internal_error): Add cmp argument.  Pass it down to show_locus.
      	(generate_error): Likewise.  Use flags bitmask instead of non-NULL
      	check for iostat and iomsg parameter presence, adjust for st_*
      	calling convention changes.
      	* runtime/stop.c (stop_numeric, stop_string): Remove show_locus
      	calls.
      	* runtime/pause.c (pause_numeric, pause_string): Likewise.
      	* runtime/string.c: Include ../io/io.h.
      	(find_option): Add cmp argument.  Pass it down to generate_error.
      	* intrinsics/flush.c (recursive_flush): Remove.
      	(flush_i4, flush_i8): Use flush_all_units.  Add unlock_unit
      	call.
      	* intrinsics/rand.c: Include ../io/io.h.
      	(rand_seed_lock): New variable.
      	(srand, irand): Add locking.
      	(init): New constructor function.
      	* intrinsics/random.c: Include ../io/io.h.
      	(random_lock): New variable.
      	(random_r4, random_r8, arandom_r4, arandom_r8): Add locking.
      	(random_seed): Likewise.  open failed if fd < 0.  Set i correctly.
      	(init): New constructor function.
      	* intrinsics/system_clock.c (tp0, t0): Remove.
      	(system_clock_4, system_clock_8): Don't subtract tp0/t0 from current
      	time, use just integer arithmetics.
      	* intrinsics/tty.c (isatty_l4, isatty_l8, ttynam_sub): Add
      	unlock_unit calls.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107328 138bc75d-0d04-0410-961f-82ee72b054a4
      60c514ba
  21. Nov 10, 2005
  22. Nov 04, 2005
    • fxcoudert's avatar
      PR libfortran/22298 · 76875ccb
      fxcoudert authored
      	* runtime/main.c (stupid_function_name_for_static_linking): New
      	function.
      	* runtime/error.c (internal_error): Call
      	stupid_function_name_for_static_linking.
      	* libgfortran.h: Add prototype for
      	stupid_function_name_for_static_linking.
      
      	* gcc/testsuite/lib/target-supports.exp
      	(check_effective_target_static_libgfortran): New
      	static_libgfortran effective target.
      	* gcc/testsuite/gfortran.dg/static_linking_1.f: New test.
      	* gcc/testsuite/gfortran.dg/static_linking_1.c: New file.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106484 138bc75d-0d04-0410-961f-82ee72b054a4
      76875ccb
  23. Oct 25, 2005
  24. Oct 12, 2005
    • fxcoudert's avatar
      * gfortran.h: Add bitmasks for different FPE traps. Add fpe · 8c84a5de
      fxcoudert authored
      	member to options_t.
      	* invoke.texi: Document the new -ffpe-trap option.
      	* lang.opt: Add -ffpe-trap option.
      	* options.c (gfc_init_options): Initialize the FPE option.
      	(gfc_handle_fpe_trap_option): New function to parse the argument
      	of the -ffpe-trap option.
      	(gfc_handle_option): Add case for -ffpe-trap.
      	* trans-decl.c: Declare a tree for the set_fpe library function.
      	(gfc_build_builtin_function_decls): Build this tree.
      	(gfc_generate_function_code): Generate a call to set_fpe at
      	the beginning of the main program.
      	* trans.h: New tree for the set_fpe library function.
      
      	* Makefile.am: Add fpu.c to the build process, and
      	target-dependent code as fpu-target.h.
      	* Makefile.in: Regenerate.
      	* configure.ac: Add call to configure.host to set
      	FPU_HOST_HEADER.
      	* configure: Regenerate.
      	* config.h.in: Regenerate.
      	* aclocal.m4: Regenerate.
      	* configure.host: New script to determine which host-dependent
      	code should go in.
      	* libgfortran.h: Add fpe option, remove previous fpu_ options.
      	Add bitmasks for different FPE traps. Add prototype for set_fpu.
      	* runtime/environ.c: Remove environment variables to control
      	fpu behaviour.
      	* runtime/fpu.c (set_fpe): New function for the front-end.
      	* runtime/main.c (init): Set FPU state.
      	* config: New directory to store host-dependent code.
      	* config/fpu-387.h: New file with code handling the i387 FPU.
      	* config/fpu-glibc.h: New file with code for glibc systems.
      	* config/fpu-generic.h: Fallback for the most generic host. Issue
      	warnings.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105328 138bc75d-0d04-0410-961f-82ee72b054a4
      8c84a5de
  25. Oct 03, 2005
    • fxcoudert's avatar
      PR libfortran/19308 · 920e54ef
      fxcoudert authored
      	PR fortran/20120
      	PR libfortran/22437
      
      	* Makefile.am: Add generated files for large real and integers
      	kinds. Add a rule to create the kinds.inc c99_protos.inc files.
      	Use kinds.inc to preprocess Fortran generated files.
      	* libgfortran.h: Add macro definitions for GFC_INTEGER_16_HUGE,
      	GFC_REAL_10_HUGE and GFC_REAL_16_HUGE. Add types gfc_array_i16,
      	gfc_array_r10, gfc_array_r16, gfc_array_c10, gfc_array_c16,
      	gfc_array_l16.
      	* mk-kinds-h.sh: Define macros HAVE_GFC_LOGICAL_* and
      	HAVE_GFC_COMPLEX_* when these types are available.
      	* intrinsics/ishftc.c (ishftc16): New function for GFC_INTEGER_16.
      	* m4/all.m4, m4/any.m4, m4/count.m4, m4/cshift1.m4, m4/dotprod.m4,
      	m4/dotprodc.m4, m4/dotprodl.m4, m4/eoshift1.m4, m4/eoshift3.m4,
      	m4/exponent.m4, m4/fraction.m4, m4/in_pack.m4, m4/in_unpack.m4,
      	m4/matmul.m4, m4/matmull.m4, m4/maxloc0.m4, m4/maxloc1.m4,
      	m4/maxval.m4, m4/minloc0.m4, m4/minloc1.m4, m4/minval.m4, m4/mtype.m4,
      	m4/nearest.m4, m4/pow.m4, m4/product.m4, m4/reshape.m4,
      	m4/set_exponent.m4, m4/shape.m4, m4/specific.m4, m4/specific2.m4,
      	m4/sum.m4, m4/transpose.m4: Protect generated functions with
      	appropriate "#if defined (HAVE_GFC_type_kind)" preprocessor directives.
      	* Makefile.in: Regenerate.
      	* all files in generated/: Regenerate.
      
      	* f95-lang.c (DO_DEFINE_MATH_BUILTIN): Add support for long
      	double builtin function.
      	(gfc_init_builtin_functions): Add mfunc_longdouble,
      	mfunc_clongdouble and func_clongdouble_longdouble trees. Build
      	them for round, trunc, cabs, copysign and pow functions.
      	* iresolve.c (gfc_resolve_reshape, gfc_resolve_transpose): Add
      	case for kind 10 and 16.
      	* trans-decl.c: Add trees for cpowl10, cpowl16, ishftc16,
      	exponent10 and exponent16.
      	(gfc_build_intrinsic_function_decls): Build nodes for int16,
      	real10, real16, complex10 and complex16 types. Build all possible
      	combinations for function _gfortran_pow_?n_?n. Build function
      	calls cpowl10, cpowl16, ishftc16, exponent10 and exponent16.
      	* trans-expr.c (gfc_conv_power_op): Add case for integer(16),
      	real(10) and real(16).
      	* trans-intrinsic.c: Add suppport for long double builtin
      	functions in BUILT_IN_FUNCTION, LIBM_FUNCTION and LIBF_FUNCTION
      	macros.
      	(gfc_conv_intrinsic_aint): Add case for integer(16), real(10) and
      	real(16) kinds.
      	(gfc_build_intrinsic_lib_fndecls): Add support for real10_decl
      	and real16_decl in library functions.
      	(gfc_get_intrinsic_lib_fndecl): Add cases for real and complex
      	kinds 10 and 16.
      	(gfc_conv_intrinsic_exponent): Add cases for real(10) and real(16)
      	kinds.
      	(gfc_conv_intrinsic_sign): Likewise.
      	(gfc_conv_intrinsic_ishftc): Add case for integer(16) kind.
      	* trans-types.c (gfc_get_int_type, gfc_get_real_type,
      	gfc_get_complex_type, gfc_get_logical_type): Doesn't error out in
      	the case of kinds not available.
      	* trans.h: Declare trees for cpowl10, cpowl16, ishftc16,
      	exponent10 and exponent16.
      
      	* gfortran.dg/large_real_kind_2.F90: New test.
      	* gfortran.dg/large_integer_kind_2.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104889 138bc75d-0d04-0410-961f-82ee72b054a4
      920e54ef
  26. Oct 01, 2005
    • jakub's avatar
      * libgfortran.h (GFC_ITOA_BUF_SIZE, GFC_XTOA_BUF_SIZE, · 556d0269
      jakub authored
      	GFC_OTOA_BUF_SIZE, GFC_BTOA_BUF_SIZE): Define.
      	(gfc_itoa, xtoa): Add 2 extra arguments.
      	* runtime/environ.c: Include stdio.h.
      	(check_buffered): Use sprintf.
      	* runtime/error.c: Include assert.h.
      	(gfc_itoa, xtoa): Add 2 extra arguments, avoid using static
      	buffers.
      	(st_printf, st_sprintf): Adjust callers.
      	* io/write.c (otoa, btoa): Add 2 extra arguments, avoid using
      	static buffers.
      	(write_int, write_decimal): Add 2 extra arguments to conv
      	function pointer, adjust caller.
      	(write_integer): Adjust gfc_itoa caller.
      
      	* io/unit.c (get_array_unit_len): Return 0 rather than NULL.
      
      	* io/read.c (read_f): Remove spurious pointer dereference.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104855 138bc75d-0d04-0410-961f-82ee72b054a4
      556d0269
  27. Sep 29, 2005
    • jakub's avatar
      * runtime/string.c (find_option): Change 3rd argument to · fb35179a
      jakub authored
      	const st_option *.
      	* libgfortran.h (find_option): Likewise.
      	* runtime/environ.c (rounding, precision, signal_choices): Constify.
      	(init_choice, show_choice): Change 2nd argument to const choice *.
      	* io/open.c (access_opt, action_opt, blank_opt, delim_opt, form_opt,
      	position_opt, status_opt, pad_opt): Constify.
      	* io/transfer.c (advance_opt): Likewise.
      	* io/inquire.c (undefined): Likewise.
      	* io/close.c (status_opt): Likewise.
      	* io/format.c (posint_required, period_required, nonneg_required,
      	unexpected_element, unexpected_end, bad_string, bad_hollerith,
      	reversion_error): Likewise.
      	* io/unix.c (yes, no, unknown): Change from const char *
      	into const char [].
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104773 138bc75d-0d04-0410-961f-82ee72b054a4
      fb35179a
  28. Sep 27, 2005
    • sje's avatar
      PR target/23552 · 839904a0
      sje authored
      	* acinclude.m4 (LIBGFOR_CHECK_FOR_BROKEN_ISFINITE): New.
      	(LIBGFOR_CHECK_FOR_BROKEN_ISNAN): New.
      	(LIBGFOR_CHECK_FOR_BROKEN_FPCLASSIFY): New.
      	* configure.ac (LIBGFOR_CHECK_FOR_BROKEN_ISFINITE): Add use.
      	(LIBGFOR_CHECK_FOR_BROKEN_ISNAN): Add use.
      	(LIBGFOR_CHECK_FOR_BROKEN_FPCLASSIFY): Add use.
      	* configure: Regenerate.
      	* config.h.in: Regenerate.
      	* libgfortan.h (isfinite): undef if broken, set if needed.
      	(isnan): undef if broken, set if needed.
              (fpclassify): undef if broken, set if needed.
      	* io/write.c: Remove TODO comment about working isfinite.
      	* intrinsics/c99_functions.c (round): Use isfinite instead
      	of fpclassify.
      	* intrinsics/c99_functions.c (roundf): Ditto.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104710 138bc75d-0d04-0410-961f-82ee72b054a4
      839904a0
  29. Sep 25, 2005
    • fxcoudert's avatar
      * c99_protos.h: Add prototypes for C99 complex functions. · d213114b
      fxcoudert authored
      	* libgfortran.h: Include complex.h before c99_protos.h.
      	* intrinsics/c99_functions.c: Define HAVE_ macros for the
      	fallback functions we provide.
      	(cabsf, cabs, cabsl, cargf, carg, cargl, cexpf, cexp, cexpl,
      	clogf, clog, clogl, clog10f, clog10, clog10l, cpowf, cpow, cpowl,
      	cqsrtf, csqrt, csqrtl, csinhf, csinh, csinhl, ccoshf, ccosh,
      	ccoshl, ctanhf, ctanh, ctanhl, csinf, csin, csinl, ccosf, ccos,
      	ccosl, ctanf, ctan, ctanl): New fallback functions.
      	* Makefile.am (gfor_math_trig_c, gfor_math_trig_obj,
      	gfor_specific_c, gfor_cmath_src, gfor_cmath_obj): Remove.
      	* Makefile.in: Regenerate.
      	* configure.ac: Remove checks for csin. Add checks for all C99
      	complex functions.
      	* config.h.in: Regenerate.
      	* configure: Regenerate.
      	* aclocal.m4: Regenerate.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104626 138bc75d-0d04-0410-961f-82ee72b054a4
      d213114b
  30. Sep 14, 2005
    • jvdelisle's avatar
      2005-09-14 Jerry DeLisle <jvdelisle@verizon.net · 2639e4cd
      jvdelisle authored
      	PR fortran/21875 Internal Unit Array I/O, NIST
      	* libgfortran.h: Add run time error code for array stride.
      	* runtime/error.c (translate_error): Add error message for
      	array stride.
      	* io/io.h: Add array descriptor pointer to IOPARM structure.
      	Add prtotypes for two new functions.
      	* io/transfer.c (data_transfer_init): Removed initialization and
      	moved to unit.c (get_unit)
      	* io/transfer.c (next_record_r): Include internal unit read
      	functionality.
      	* io/transfer.c (next_record_w): Include internal unit write
      	functionality, including padding of character array records.
      	* io/unit.c (get_array_unit_len): New function to return the number
      	of records in the character array 'file' from the array descriptor.
      	* io/unit.c (get_unit): Gathered initialization code from
      	init_data_transfer for internal units and added initialization of
      	character array unit.
      	* io/unit.c (is_array_io): New function to determine if internal unit
      	is an array.
      	* io/unix.c (mem_alloc_w_at): Add error checks for bad record length
      	and end of file.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104276 138bc75d-0d04-0410-961f-82ee72b054a4
      2639e4cd
  31. Sep 02, 2005
  32. Aug 17, 2005
  33. Aug 11, 2005
    • fxcoudert's avatar
      PR libfortran/20006 · 64fc3c4c
      fxcoudert authored
      	* gfortran.h: Add is_main_program member to symbol_attribute.
      	* trans-decl: Add a gfor_fndecl_set_std tree.
      	(gfc_build_builtin_function_decls): Create it.
      	(gfc_generate_function_code): Add this call at the beginning of
      	the main program.
      	* trans.c (gfc_generate_code): Move main_program and attr.
      	* trans.h: Add declaration for gfor_fndecl_set_std.
      
      	* Makefile.am: Add file runtime/compile_options.c.
      	* Makefile.in: Regenerate.
      	* libgfortran.h: Create structure compile_options_t. Define the
      	compile_options variable and GFC_STD_ macros.
      	* runtime/compile_options.c: New file.
      	* runtime/error.c (notify_std): New function.
      	* runtime/main.c (init): Call init_compile_options during
      	initialization.
      	* io/format.c: Use the new notify_std function for the $
      	descriptor extension.
      
      	* gfortran.dg/runtime_warning_1.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102990 138bc75d-0d04-0410-961f-82ee72b054a4
      64fc3c4c
  34. Aug 03, 2005
  35. Jul 07, 2005
    • tobi's avatar
      * libgfortran.h (GFC_ARRAY_DESCRIPTOR): Replace 'type *base' by · 93830de1
      tobi authored
      	'size_t offset'.
      	* intrinsics/cshift0.c, intrinsics/eoshift0.c,
      	intrinsics/eoshift2.c,intrinsics/pack_generic.c,
      	intrinsics/reshape_generic.c, intrinsics/spread_generic.c,
      	intrinsics/transpose_generic.c, intrinsics/unpack_generic,
      	m4/cshift1.m4, m4/eoshift1.m4, m4/eoshift3.m4, m4/iforeach.m4,
      	m4/ifunction.m4, m4/matmul.m4, m4/matmull.m4, m4/reshape.m4,
      	m4,transpose.m4: Set renamed field 'offset' to zero instead of
      	'base'.
      	* generated/all_l4.c, generated/all_l8.c,
      	generated/any_l4.c, generated/any_l8.c, generated/count_4_l4.c,
      	generated/count_4_l8.c, generated/count_8_l4.c,
      	generated/count_8_l8.c, generated/chift1_4.c,
      	generated/cshift1_8.c, generated/eoshift1_4.c,
      	generated/eoshift1_8.c, generated/eoshift3_4.c,
      	generated/eoshift3_8.c, generated/matmul_c4.c,
      	generated/matmul_c8.c, generated/matmul_i4.c, matmul_i8.c,
      	generated/matmul_l4.c, generated/matmul_l8.c,
      	generated/matmul_r4.c, generated/matmul_r8.c,
      	generated/maxloc0_4_i4.c, generated/maxloc0_4_i8.c,
      	generated/maxloc0_4_r4.c, generated/maxloc0_4_r8.c,
      	generated/maxloc0_8_i4.c, generated/maxloc0_8_i8.c,
      	generated/maxloc0_8_r4.c, generated/maxloc0_8_r8.c,
      	generated/maxloc1_4_i4.c, generated/maxloc1_4_i8.c,
      	generated/maxloc1_4_r4.c, generated/maxloc1_4_r8.c,
      	generated/maxloc1_8_i4.c, generated/maxloc1_8_i8.c,
      	generated/maxloc1_8_r4.c, generated/maxloc1_8_r8.c,
      	generated/maxval_i4.c, generated/maxval_i8.c,
      	generated/maxval_r4.c, generated/maxval_r8.c,
      	generated/minloc0_4_i4.c, generated/minloc0_4_i8.c,
      	generated/minloc0_4_r4.c, generated/minloc0_4_r8.c,
      	generated/minloc0_8_i4.c, generated/minloc0_8_i8.c,
      	generated/minloc0_8_r4.c, generated/minloc0_8_r8.c,
      	generated/minloc1_4_i4.c, generated/minloc1_4_i8.c,
      	generated/minloc1_4_r4.c, generated/minloc1_4_r8.c,
      	generated/minloc1_8_i4.c, generated/minloc1_8_i8.c,
      	generated/minloc1_8_r4.c, generated/minloc1_8_r8.c,
      	generated/minval_i4.c, generated/minval_i8.c,
      	generated/minval_r4.c, generated/minval_r8.c,
      	generated/product_c4.c, generated/product_c8.c,
      	generated/product_i4.c, generated/product_i8.c,
      	generated/product_r4.c, generated/product_r8.c,
      	generated/reshape_c4.c, generated/reshape_c8.c,
      	generated/reshape_i4.c, generated/reshape_i8.c,
      	generated/sum_c4.c, generated/sum_c8.c, generated/sum_i4.c,
      	generated/sum_i8.c, generated/sum_r4.c, generated/sum_r8.c,
      	generated/transpose_c4.c, generated/transpose_c8.c,
      	generated/transpose_i4.c, generated/transpose_i8.c: Regenerate:
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101739 138bc75d-0d04-0410-961f-82ee72b054a4
      93830de1
  36. Jun 23, 2005
    • fxcoudert's avatar
      * intrinsics/c99_functions.c (log10l): New log10l function for · 14c3c235
      fxcoudert authored
      	systems where this is not available.
      	* c99_protos.h: Prototype for log10l function.
      	* libgfortran.h: Use generated kinds.h to define GFC_INTEGER_*,
      	GFC_UINTEGER_*, GFC_LOGICAL_*, GFC_REAL_*, GFC_COMPLEX_*. Update
      	prototypes for gfc_itoa and xtoa.
      	* io/io.h: Update prototypes for set_integer and max_value.
      	* io/list_read.c (convert_integer): Use new
      	GFC_(INTEGER|REAL)_LARGEST type.
      	* io/read.c (set_integer): Likewise.
      	(max_value): Likewise.
      	(convert_real): Likewise.
      	(real_l): Likewise.
      	(next_char): Likewise.
      	(read_decimal): Likewise.
      	(read_radix): Likewise.
      	(read_f): Likewise.
      	* io/write.c (extract_int): Use new GFC_INTEGER_LARGEST type.
      	(extract_real): Use new GFC_REAL_LARGEST type.
      	(calculate_exp): Likewise.
      	(calculate_G_format): Likewise.
      	(output_float): Likewise. Use log10l for long double values.
      	Add comment for sprintf format. Use GFC_REAL_LARGEST_FORMAT.
      	(write_l): Use new GFC_INTEGER_LARGEST type.
      	(write_float): Use new GFC_REAL_LARGEST type.
      	(write_int): Remove useless special case for (len < 8).
      	(write_decimal): Use GFC_INTEGER_LARGEST.
      	(otoa): Use GFC_UINTEGER_LARGEST as argument.
      	(btoa): Use GFC_UINTEGER_LARGEST as argument.
      	* runtime/error.c (gfc_itoa): Use GFC_INTEGER_LARGEST as
      	argument.
      	(xtoa): Use GFC_UINTEGER_LARGEST as argument.
      	* Makefile.am: Use mk-kinds-h.sh to generate header kinds.h
      	with all Fortran kinds available.
      	* configure.ac: Check for strtold and log10l.
      	* Makefile.in: Regenerate.
      	* aclocal.m4: Regenerate.
      	* configure: Regenerate.
      	* config.h.in: Regenerate.
      	* mk-kinds-h.sh: Configuration script for available integer
      	and real kinds.
      	* lib/target-supports.exp: Add
      	check_effective_target_fortran_large_real and
      	check_effective_target_fortran_large_int to check for
      	corresponding effective targets.
      	* gfortran.dg/large_integer_kind_1.f90: New test.
      	* gfortran.dg/large_real_kind_1.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101274 138bc75d-0d04-0410-961f-82ee72b054a4
      14c3c235
  37. Jun 11, 2005
    • tkoenig's avatar
      2005-06-11 Thomas Koenig <Thomas.Koenig@onlinde.de> · f27ef643
      tkoenig authored
      	PR libfortran/21333
      	* Makefile.am: Add in_pack_c4.c, in_pack_c8.c, in_unpack_c4.c
      	and in_unpack_c8.c.
      	* Makefile.in: Regenerate.
      	* libgfortran.h:  Declare internal_pack_c4, internal_pack_c8,
      	internal_unpack_c4 and internal_unpack_c8.
      	* m4/in_pack.m4: Use rtype_ccode insteald of rtype_kind
      	in function name.
      	Use sizeof (rtype_name) as size for memory allocation.
      	* m4/in_unpack.m4: Use rtype_ccode insteald of rtype_kind
      	in function name.
      	Use sizeof (rtype_name) for calculation of sizes for memcpy.
      	* runtime/in_pack_generic.c:  For real, integer and logical
      	call internal_pack_4 if size==4 and internal_pack_8 if
      	size==8.
      	For complex, call internal_pack_c4 if size==8 and
      	internal_pack_c8 if size==16.
      	* runtime/in_unpack_generic.c: For real, integer and logical
              call internal_unpack_4 if size==4 and internal_unpack_8 if
              size==8.
              For complex, call internal_unpack_c4 if size==8 and
              internal_unpack_c8 if size==16.
      	* generated/in_pack_i4.c:  Regenerated.
      	* generated/in_pack_i8.c:  Regenerated.
      	* generated/in_unpack_i4.c:  Regenerated.
      	* generated/in_unpack_i8.c:  Regenerated.
      	* generated/in_pack_c4.c:  New file.
      	* generated/in_pack_c8.c:  New file.
      	* generated/in_unpack_c4.c:  New file.
      	* generated/in_unpack_c8.c:  New file.
      
      2005-05-11  Thomas Koenig  <Thomas.Koenig@online.de>
      
      	* gfortran.fortran-torture/execute/in-pack.f90:  New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100842 138bc75d-0d04-0410-961f-82ee72b054a4
      f27ef643
  38. Apr 30, 2005
  39. Feb 01, 2005
Loading