+2005-11-28 Steven G. Kargl <kargls@comcast.net>
+
+ PR libgfortran/25149
+ * intrinsics/abort.c: Add external abort_ to allow linking when
+ invoking -std=f95 in testsuite.
+
+2005-11-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/25109
+ * io/unit.c (init_units): Set default flag to BLANK_NULL per
+ requirement of F95 standard. Set PAD_YES for stdin.
+
+2005-11-27 David Edelsohn <edelsohn@gnu.org>
+
+ * intrinsics/random.c: Include config.h
+ * io/size_from_kind.c: Include config.h and libgfortran.h
+ * io/io.h: Revert 2005-11-21 change.
+
+2005-11-27 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * io/write.c (namelist_write): Correct type in previous
+ commit.
+
+2005-11-27 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/24919
+ * io/list_read.c (eat_separator, finish_separator,
+ read_character): Handle CRLF separators correctly during reads.
+ (nml_query): Use the HAVE_CRLF macro to print adequate newlines.
+ * io/io.h (st_parameter_dt): Add comment about the possible
+ values for sf_seen_eor.
+ * io/unix.c (tempfile, regular_file): HAVE_CRLF doesn't imply
+ that O_BINARY is defined, so we add that condition.
+ (stream_at_bof): Fix typo in comment.
+ * io/transfer.c (read_sf): Handle correctly CRLF, setting
+ sf_seen_eor value to 2 instead of 1.
+ (formatted_transfer_scalar): Use the sf_seen_eor value to
+ handle CRLF the right way.
+ * io/write.c (nml_write_obj, namelist_write): Use CRLF as newline
+ when HAVE_CRLF is defined.
+
+2005-11-26 Richard Henderson <rth@redhat.com>
+
+ * io/list_read.c (nml_parse_qualifier): Use ssize_t instead of int
+ in dtp->u.p.value.
+
+2005-11-26 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR libgfortran/24945
+ * io/open.c (edit_modes): Check for STATUS_UNKNOWN flag.
+
+2005-11-25 Richard Henderson <rth@redhat.com>
+
+ * io/list_read.c (nml_parse_qualifier): Use memcpy to extract
+ values from dtp->u.p.value.
+ * io/io.h (struct st_parameter_dt): Change reversion_flag, first_item,
+ seen_dollar, sf_seen_eor, eor_condition, no_leading_blank, char_flag,
+ input_complete, at_eol, comma_flag, namelist_mode, nml_read_error to
+ single-bit fields. Move value to where it'll be at least pointer
+ aligned.
+
+2005-11-23 Alan Modra <amodra@bigpond.net.au>
+
+ * io/open.c (new_unit): Use the right unit number when checking
+ for stdin, stdout, stderr.
+
+2005-11-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/24794
+ * io/list_read.c (read_character): Add auto completion on short
+ namelist reads.
+
+2005-11-21 David Edelsohn <edelsohn@gnu.org>
+
+ * io/io.h (_LARGE_FILES): Undefine for AIX.
+ (_LARGE_FILE_API): Define for AIX.
+
+2005-11-21 Jakub Jelinek <jakub@redhat.com>
+
+ 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.
+
+2005-11-20 Richard Henderson <rth@redhat.com>
+
+ * Makefile.am: Revert 2005-11-14 change. Enable -free-vectorize
+ via gmake per-target variables.
+ * Makefile.in, aclocal.m4: Regenerate.
+
+2005-11-18 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * configure.ac: Add "-I ." to the AM_FCFLAGS.
+ * configure: Regenerate.
+
+2005-11-18 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/fpu-glibc.h (set_fpu): Only call fedisableexcept for
+ nonzero FE_ALL_EXCEPT.
+
+2005-11-17 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR fortran/24892
+ * io/io.h (unit_access): Add ACCESS_APPEND.
+ * io/open.c (access_opt): Add APPEND value for ACCESS keyword.
+ (st_open): Use that new value to set the POSITION accordingly.
+
+2005-11-14 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR fortran/21468
+ * Makefile.am: Add -ftree-vectorize for compiling matmul.
+ * m4/matmul.m4: Add const and restrict to type declarations as
+ appropriate.
+ * m4/matmull.m4: Likewise.
+ * Makefile.in: Regenerated.
+ * generated/matmul_*.c: Likewise.
+
+2005-11-13 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * intrinsics/fget.c: New file.
+ * intrinsics/ftell.c: New file.
+ * io/unix.c (stream_offset): New function.
+ * io/io.h: Add prototype for stream_offset.
+ * Makefile.am: Add intrinsics/fget.c and intrinsics/ftell.c.
+ * Makefile.in: Regenerate.
+
+2005-11-12 Steven G. Kargl <kargls@comcast.net>
+
+ PR libgfortran/24787
+ * intrinsics/string_intrinsics.c (string_scan): Off by one; Fix typos
+ in nearby comment.
+
+2005-11-10 Andreas Jaeger <aj@suse.de>
+
+ * libgfortran.h: Add proper defines where needed.
+
+2005-11-10 Andreas Jaeger <aj@suse.de>
+
+ * libgfortran.h: Add missing prototypes for internal_pack
+ functions.
+
+2005-11-06 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR fortran/24174
+ PR fortran/24305
+ * io/io.h: Add argument to prototypes, add prototypes for
+ size_from_*_kind functions.
+ * io/list_read.c (read_complex): Add size argument, use
+ it.
+ (list_formatted_read): Add size argument, cleanup.
+ (list_formatted_read_scalar): Add size argument.
+ (nml_read_obj): Fix for padding.
+ * io/transfer.c: Add argument to transfer function pointer.
+ (unformatted_read): Add size argument.
+ (unformatted_write): Likewise.
+ (formatted_transfer_scalar): Fix for padding with complex(10).
+ (formatted_transfer): Add size argument, cleanup.
+ (transfer_integer): Add size argument to transfer call.
+ (transfer_real): Likewise.
+ (transfer_logical): Likewise.
+ (transfer_character): Likewise.
+ (transfer_complex): Likewise.
+ (transfer_array): New kind argument, use it.
+ (data_transfer_init): Add size argument to formatted_transfer
+ call.
+ (iolength_transfer): Add size argument, cleanup.
+ * io/write.c (write_complex): Add size argument, fix for padding
+ with complex(10).
+ (list_formatted_write): Add size argument, cleanup.
+ (list_formatted_write_scalar): Add size argument, use it.
+ (nml_write_obj): Fix for size vs. kind issue.
+ * io/size_from_kind.c: New file.
+ * Makefile.am: Add io/size_from_kind.c.
+ * configure: Regenerate.
+ * Makefile.in: Regenerate.
+
+2005-11-06 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * intrinsics/ctime.c: New file.
+ * configure.ac: Add check for ctime.
+ * Makefile.am: Add ctime.c
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+ * Makefile.in: Regenerate.
+
+2005-11-05 Richard Guenther <rguenther@suse.de>
+
+ * configure.ac: Use AM_FCFLAGS for extra flags, not FCFLAGS.
+ * configure: Regenerate.
+
+2005-11-05 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * intrinsics/tty.c (ttynam): New function.
+
+2005-11-04 Steven G. Kargl <kargls@comcast.net>
+
+ PR fortran/24636
+ * runtime/stop.c (stop_numeric): Use stop_code = -1.
+
+2005-11-04 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/22298
+ * 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.
+
+2005-11-01 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/14994
+ * libgfortran/intrinsics/date_and_time.c: Add interface to
+ the functions date_and_time for the intrinsic function secnds.
+
+2005-10-31 Jerry DeLisle <jvdelisle@verizon.net>
+
+ PR libgfortran/24584
+ * io/list_read.c (free_saved): Set saved_used to zero.
+
+2005-10-30 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20179
+ * io/unix.c (flush_if_preconnected): New function.
+ * io/io.h: Add prototype for flush_if_preconnected.
+ * io/transfer.c (data_transfer_init): Use flush_if_preconnected
+ to workaround buggy mixed C-Fortran code.
+
+2005-10-30 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * Makefile.am: Add intrinsics/malloc.c file.
+ * Makefile.in: Regenerate.
+ * intrinsics/malloc.c: New file, with implementations for free
+ and malloc library functions.
+
+2005-10-29 Mike Stump <mrs@apple.com>
+
+ * Makefile.am (kinds.h): Remove target, if command fails.
+ (selected_int_kind.inc): Likewise.
+ (selected_real_kind.inc): Likewise.
+ * Makefile.in: Regenerate.
+
+2005-10-28 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+
+ * Makefile.am (intrinsics): Add signal.c.
+ * Makefile.in: Regenerate.
+ * configure.ac: Checks for signal and alarm.
+ * config.h.in: Regenerate.
+ * configure: Regenerate.
+ * intrinsics/signal.c: New file for SIGNAL and ALARM intrinsics.
+
+2005-10-28 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * acinclude.m4 (LIBGFOR_CHECK_FPSETMASK): New check.
+ * configure.ac: Check for floatingpoint.h, fptrap.h and float.h
+ headers. Use LIBGFOR_CHECK_FPSETMASK. Check for fp_trap and
+ fp_enable functions.
+ * configure.host: Add case for systems with fpsetmask and systems
+ with fp_trap/fp_enable.
+ * config/fpu-sysv.h: New file, FPU code using fpsetmask.
+ * config/fpu-aix.h: New file, FPU code for AIX using fp_trap and
+ fp_enable.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+
+2005-10-24 Jerry DeLisle <jvdelisle@verizon.net>
+
+ PR libgfortran/24224
+ * libgfortran.h: Remove array stride error code.
+ * runtime/error.c: Remove array stride error.
+ * io/io.h: Change name of 'nml_loop_spec' to 'array_loop_spec' to be
+ generic. Add pointer to array_loop_spec and rank to gfc_unit
+ structure.
+ * io/list_read.c: Revise nml_loop_spec references to array_loop_spec.
+ * io/transfer.c (init_loop_spec): New function to initialize
+ an array_loop_spec.
+ (next_array_record): New function to return the index to the next array
+ record by incrementing through the array_loop_spec.
+ (next_record_r): Use new function.
+ (next_record_w): Use new function.
+ (finalize_transfer): Free memory allocated for array_loop_spec.
+ * io/unit.c (get_array_unit_len): Delete this function. Use new
+ function init_loop_spec to initialize the array_loop_spec.
+
+2005-10-24 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/24416
+ * libgfortran/io/list_read.c (namelist_read): Exit with call to
+ free_saved () so that character strings do not accumulate.
+
+2005-10-23 Jerry DeLisle <jvdelisle@verizon.net>
+
+ PR libgfortran/24489
+ * io/transfer.c (read_block): Change the order of execution to not read
+ past end-of-record.
+ (read_block_direct): Same change.
+
+2005-10-23 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/23272
+ * acinclude.m4 (LIBGFOR_CHECK_WORKING_STAT): New check.
+ * configure.ac: Use LIBGFOR_CHECK_WORKING_STAT.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * io/unix.c (compare_file_filename): Add fallback case for
+ systems without working stat.
+ * io/open.c (already_open): Correct call to
+ compare_file_filename.
+ * io/io.h: Correct proto for compare_file_filename.
+
+2005-10-23 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * runtime/fpu.c: Add _GNU_SOURCE definition.
+ * config/fpu-glibc.h: Remove __USE_GNU definition.
+
+2005-10-23 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/24384
+ * intrinsics/spread_generic.c (spread_internal_scalar): New
+ function that handles the special case of spread with a scalar
+ source. This has new interface functions -
+ (spread_scalar, spread_char_scalar): New functions to interface
+ with the calls specified in gfc_resolve_spread.
+
+2005-10-21 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/24383
+ * io/unix.c: Add fallback definition for SSIZE_MAX.
+
+2005-10-19 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * c99_protos.h: Define preprocessor HAVE_ macros with value 1
+ instead of empty value.
+ * intrinsics/c99_functions.c: Likewise.
+ * intrinsics/getXid.c: Define HAVE_GETPID with value 1 instead of
+ empty value.
+ * intrinsics/sleep.c: Define HAVE_SLEEP with value 1 instead of
+ empty value.
+
+2005-10-19 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/24432
+ * c99_protos.h: Define HAVE_ macros for all provided functions.
+
+2005-10-14 Uros Bizjak <uros@kss-loka.si>
+
+ * config/fpu-387.h (set_fpu): Remove extra ":" in stmxcsr.
+ Change cw and cw_sse variables to unsigned.
+ (SSE): New definition.
+ (has_sse): Use it.
+
+2005-10-13 Thomas Koenig <Thomas.Koenig@online.de>
+
+ * io/unix.c(fd_alloc_r_at): Use read() instead of do_read()
+ only in case of special files (e.g. terminals).
+
+2005-10-13 Uros Bizjak <uros@kss-loka.si>
+
+ * config/fpu-387.h (set_fpu): Add "=m" for stmxcsr.
+
+2005-10-12 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * 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.
+ * 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.
+
+2005-10-12 Janne Blomqvist <jblomqvi@cc.hut.fi>
+
+ * io/unix.c(fd_alloc_r_at): Remove parts of patch of 2005/10/07 that
+ cause input from the terminal to hang.
+
+2005-10-11 Steven G. Kargl <kargls@comcast.net>
+
+ PR libgfortran/24313
+ * c99_functions.c (csqrtf, csqrt): Fix choice of branch cut. Note
+ csqrt{f} were imported from glibc, and this bug is still present
+ there. glibc PR is 1146.
+
+2005-10-07 Janne Blomqvist <jblomqvi@cc.hut.fi>
+
+ PR fortran/16339
+ PR fortran/23363
+ * io/io.h: Add read and write members to stream, define access
+ macros.
+ * io/transfer.c (read_block_direct): New function.
+ (write_block_direct): New function.
+ (unformatted_read): Change to use read_block_direct.
+ (unformatted_write): Change to use write_block_direct.
+ * io/unix.c: Remove mmap includes and defines.
+ (writen): Remove.
+ (readn): Remove.
+ (reset_stream): New function.
+ (do_read): New function.
+ (do_write): New function.
+ (fd_flush): Change to use do_write() instead of writen().
+ (fd_alloc_r_at): Change to use do_read().
+ (fd_seek): Change return type to try, as the prototype. Add check
+ to avoid syscall overhead if possible.
+ (fd_read): New function.
+ (fd_write): New function.
+ (fd_open): Set pointers for new functions.
+ (mem_read): New function.
+ (mem_write): New function.
+ (open_internal): Set pointers for new functions.
+ (is_seekable): Clean up comment.
+
+2005-10-07 Jerry DeLisle <jvdelisle@verizon.net>
+
+ * io/transfer.c (write_block): Add test for end-of-file condition,
+ removed from mem_alloc_w_at. (next_record_w): Clean up checks for
+ NULL pointer returns from s_alloc_w.
+ * io/unix.c (mem_alloc_w_at): Remove call to generate_error end-of-file.
+ * io/write.c (write_float): Add checks for NULL pointer returns from
+ write_block calls. (write_integer): Same.
+
+2005-10-03 Jakub Jelinek <jakub@redhat.com>
+
+ * runtime/memory.c (allocate_size): Malloc 1 byte if size == 0.
+
+2005-10-03 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/19308
+ 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.
+
+2005-10-01 Jakub Jelinek <jakub@redhat.com>
+
+ * runtime/memory.c (malloc_t): Remove.
+ (GFC_MALLOC_MAGIC, HEADER_SIZE, DATA_POINTER, DATA_HEADER): Remove.
+ (mem_root, runtime_cleanup, malloc_with_header): Remove.
+ (internal_malloc_size): Use just get_mem if size != 0, return NULL
+ otherwise.
+ (internal_free): Just free if non-NULL.
+ (internal_realloc_size): Remove debugging stuff.
+ (allocate_size): Use malloc directly, remove debugging stuff.
+ (deallocate): Use free directly, fix error message wording.
+
+ * libgfortran.h (GFC_ITOA_BUF_SIZE, GFC_XTOA_BUF_SIZE,
+ 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.
+
+2005-09-30 Janne Blomqvist <jblomqvi@cc.hut.fi>
+
+ PR 24112
+ * io/open.c (edit_modes): Check for correct flag.
+
+2005-09-29 Jakub Jelinek <jakub@redhat.com>
+
+ * runtime/string.c (find_option): Change 3rd argument to
+ 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 [].
+
+2005-09-27 Steve Ellcey <sje@cup.hp.com>
+
+ PR target/23552
+ * 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.
+
+2005-09-24 Janne Blomqvist <jblomqvi@cc.hut.fi>
+
+ * io.h: Changed prototypes of list_formatted_{read|write}.
+ * list_read.c (list_formatted_read): Renamed to
+ list_formatted_read_scalar and made static.
+ (list_formatted_read): New function.
+ * transfer.c: Prototype for transfer_array. Changed transfer
+ function pointer.
+ (unformatted_read): Add nelems argument, use it.
+ (unformatted_write): Likewise.
+ (formatted_transfer): Changed name to formatted_transfer_scalar.
+ (formatted_transfer): New function.
+ (transfer_integer): Add nelems argument to transfer call, move
+ updating item count to transfer functions.
+ (transfer_real): Likewise.
+ (transfer_logical): Likewise.
+ (transfer_character): Likewise.
+ (transfer_complex): Likewise.
+ (transfer_array): New function.
+ (data_transfer_init): Call formatted_transfer with new argument.
+ (iolength_transfer): New argument, use it.
+ * write.c (list_formatted_write): Renamed to
+ list_formatted_write_scalar, made static.
+ (list_formatted_write): New function.
+
+2005-09-26 David Edelsohn <edelsohn@gnu.org>
+
+ * configure.ac: Add check for __clog.
+ * configure: Regenerate.
+
+2005-09-25 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ * c99_protos.h: Add prototypes for C99 complex functions.
+ * 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.
+
+2005-09-25 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+ Danny Smith <dannysmith@users.sourceforge.net>
+
+ PR libfortran/23803
+ * intrinsics/getXid.c: Add getpid wrapper for MinGW.
+ * intrinsics/getlog.c: Add getlogin wrapper for MinGW.
+ * intrinsics/hostnm.c: Add gethostname wrapper for MinGW.
+
+2005-09-24 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/23802
+ * intrinsics/sleep.c: Add correct sleep macro for MinGW.
+
+2005-09-24 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/23380
+ * intrinsics/cpu_time.c (__cpu_time_1): Provide a MS Windows
+ version.
+
+2005-09-14 Jerry DeLisle <jvdelisle@verizon.net
+
+ 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.
+
+2005-09-13 Richard Sandiford <richard@codesourcery.com>
+
+ PR target/19269
+ * intrinsics/cshift0.c (cshift0): Add an extra size argument.
+ (cshift0_1, cshift0_2, cshift0_4, cshift0_8): Replace explicit
+ implementations with...
+ (DEFINE_CSHIFT): ...this new macro. Define character versions too.
+ * intrinsics/eoshift0.c (zeros): Delete.
+ (eoshift0): Add extra size and filler arguments. Use memset if no
+ bound is provided.
+ (eoshift0_1, eoshift0_2, eoshift0_4, eoshift0_8): Replace explicit
+ implementations with...
+ (DEFINE_EOSHIFT): ...this new macro. Define character versions too.
+ * intrinsics/eoshift2.c (zeros): Delete.
+ (eoshift2): Add extra size and filler arguments. Use memset if no
+ bound is provided.
+ (eoshift2_1, eoshift2_2, eoshift2_4, eoshift2_8): Replace explicit
+ implementations with...
+ (DEFINE_EOSHIFT): ...this new macro. Define character versions too.
+ * intrinsics/pack.c (pack_internal): New static function, reusing
+ the contents of pack and adding an extra size argument. Change
+ "mptr" rather than "m" when calculating the array size.
+ (pack): Redefine as a forwarder to pack_internal.
+ (pack_s_internal): New static function, reusing the contents of
+ pack_s and adding an extra size argument.
+ (pack_s): Redefine as a forwarder to pack_s_internal.
+ (pack_char, pack_s_char): New functions.
+ * intrinsics/reshape.c (reshape_internal): New static function,
+ reusing the contents of reshape and adding an extra size argument.
+ (reshape): Redefine as a forwarder to reshape_internal.
+ (reshape_char): New function.
+ * intrinsics/spread.c (spread_internal): New static function,
+ reusing the contents of spread and adding an extra size argument.
+ (spread): Redefine as a forwarder to spread_internal.
+ (spread_char): New function.
+ * intrinsics/transpose.c (transpose_internal): New static function,
+ reusing the contents of transpose and adding an extra size argument.
+ (transpose): Redefine as a forwarder to transpose_internal.
+ (transpose_char): New function.
+ * intrinsics/unpack.c (unpack_internal): New static function, reusing
+ the contents of unpack1 and adding extra size and fsize arguments.
+ (unpack1): Redefine as a forwarder to unpack_internal.
+ (unpack0): Call unpack_internal instead of unpack1.
+ (unpack1_char, unpack0_char): New functions.
+ * m4/cshift1.m4 (cshift1): New static function, reusing the contents
+ of cshift1_<kind> and adding an extra size argument.
+ (cshift1_<kind>): Redefine as a forwarder to cshift1.
+ (cshift1_<kind>_char): New function.
+ * m4/eoshift1.m4 (zeros): Delete.
+ (eoshift1): New static function, reusing the contents of
+ eoshift1_<kind> and adding extra size and filler arguments.
+ Fix calculation of hstride. Use memset if no bound is provided.
+ (eoshift1_<kind>): Redefine as a forwarder to eoshift1.
+ (eoshift1_<kind>_char): New function.
+ * m4/eoshift3.m4 (zeros): Delete.
+ (eoshift3): New static function, reusing the contents of
+ eoshift3_<kind> and adding extra size and filler arguments.
+ Use memset if no bound is provided.
+ (eoshift3_<kind>): Redefine as a forwarder to eoshift3.
+ (eoshift3_<kind>_char): New function.
+ * generated/cshift1_4.c, generated/cshift1_8.c,
+ * generated/eoshift1_4.c, generated/eoshift1_8.c,
+ * generated/eoshift3_4.c, generated/eoshift3_8.c: Regenerate.
+
+2005-09-11 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20179
+ * io/unix.c (is_preconnected): Add function to test if a stream
+ corresponds to a preconnected unit.
+ * io/io.h: Add prototype for is_preconnected.
+ * io/transfer.c (data_transfer_init): Do not truncate
+ preconnected units.
+
+2005-09-10 Janne Blomqvist <jblomqvi@cc.hut.fi>
+
+ * io/unix.c: Remove mmap code.
+
+2005-09-09 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/23784
+ * io/close.c (st_close): Call library_end even in case of error.
+
+2005-09-09 Thomas Koenig <Thomas.Koenig@online.de>
+
+ * io/io.h: Add iomsg as last field of st_parameter.
+ * runtime/error.c (generate_error): If iomsg is present, copy
+ the message there.
+
+2005-09-09 Richard Sandiford <richard@codesourcery.com>
+
+ PR fortran/12840
+ * runtime/memory.c (internal_malloc_size): Return a null pointer
+ if the size is zero.
+ (internal_free): Do nothing if the pointer is null.
+ (internal_realloc_size, internal_realloc, internal_realloc64): New.
+
+2005-09-07 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/23262
+ * acinclude.m4 (LIBGFOR_CHECK_CRLF): New check.
+ * configure.ac: Use new check.
+ * configure.in: Regenerate.
+ * config.h.in: Regenerate.
+ * configure: Regenerate.
+ * io/transfer.c (next_record_w): Add case for CRLF as line
+ terminator.
+ * io/unix.c (tempfile, regular_file): Open files with
+ O_BINARY on systems with CRLF.
+
+2005-09-07 Steve Ellcey <sje@cup.hp.com>
+
+ PR libfortran/23419
+ * io/write.c (extract_int): Use memcpy to access buffer.
+ (extract_uint): Ditto.
+ (extract_real): Ditto.
+
+2005-09-05 Thomas Koenig <Thomas.Koenig@online.de>
+
+ * io/list_read.c: Adjust size of of value to 32 (to hold
+ kind=16 complex values).
+
+2005-09-04 Thomas Koenig <Thomas.Koenig@online.de>
+
+ PR libfortran/23321
+ * io/transfer.c(data_transfer_init): Check for a too-large
+ record number. Return if sseek failed.
+
2005-09-03 Jakub Jelinek <jakub@redhat.com>
* io/read.c (read_x): Take int argument instead of fnode * and