2014-06-12  Release Manager

	* GCC 4.7.4 released.

2014-05-26  Janne Blomqvist  <jb@gcc.gnu.org>

	Backport from mainline
	PR libfortran/61310
	* intrinsics/ctime.c (strctime): Rename to gf_ctime, use snprintf
	instead of strftime.
	(fdate): Use gf_ctime.
	(fdate_sub): Likewise.
	(ctime): Likewise.
	(ctime_sub): Likewise.

2014-05-16  Janne Blomqvist  <jb@gcc.gnu.org>

	Backport from trunk:
	PR libfortran/61187
	* io/unix.c (raw_close): Check if s->fd is -1.
	(fd_to_stream): Check return value of fstat(), handle error.

2014-05-04  Janne Blomqvist  <jb@gcc.gnu.org>

	Backport from 4.9
	PR libfortran/56919
	* intrinsics/system_clock.c (GF_CLOCK_MONOTONIC): Check
	_POSIX_MONOTONIC_CLOCK as well.

2014-04-12  Jerry DeLisle  <jvdelisle@gcc.gnu>

	Backport from mainline
	PR libfortran/60810
	* io/unit.c (is_trim_ok): If internal unit is array, do not trim.

2014-03-15  Jerry DeLisle  <jvdelisle@gcc.gnu>

	Backport from mainline
	PR libfortran/58324
	PR libfortran/38199
	* intrinsics/string_intriniscs_inc.c (string_len_trim):
	Remove prototypes for string_len_trim and move to...
	* libgfortran.h (string_len_trim): ... here and
	(string_len_trim_char4): ...here.
	* io/list_read.c (finish_list_read): Read one character to check
	for the end of the file.  If it is the end, then issue the file
	end error message.  If not, use eat_line to reach the end
	without giving error.  The next attempt to read will then
	issue the error as described above.
	* io/read.c (read_decimal): Quickly skip spaces to avoid calls
	to next_char.
	* io/unit.c (is_trim_ok): New helper function to check various
	conditions to see if its OK to trim the internal unit string.
	(get_internal_unit): Use LEN_TRIM to shorten selected internal
	unit strings for optimizing READ. Enable this optimization for
	formatted READ.

2014-02-15  Jerry DeLisle  <jvdelisle@gcc.gnu>
	    Dominique d'Humieres  <dominiq@lps.ens.fr>

	Backport from mainline
	PR libfortran/59771
	PR libfortran/59774
	PR libfortran/59836
	* io/write_float.def (output_float): Fix wrong handling of the
	Fw.0 format.
	(output_float_FMT_G_): Fixes rounding issues with -m32.

2013-07-03  Uros Bizjak  <ubizjak@gmail.com>

	Backport from mainline
	2013-06-20  Uros Bizjak  <ubizjak@gmail.com>

	* config/fpu-387.h (_FPU_MASK_ALL): New.
	(_FPU_EX_ALL): Ditto.
	(set_fpu): Use fstcw to store x87 FPU control word. Use fnclex to
	clear stalled exception flags.  Correctly clear stalled SSE
	exception flags.  Simplify code.

	Backport from mainline
	2013-06-19  Uros Bizjak  <ubizjak@gmail.com>

	* config/fpu-387.h: Use __asm__ and __volatile__ consistently.

2013-04-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	Backport from mainline:
	2013-03-20  Tilo Schwarz  <tilo@tilo-schwarz.de>

	PR libfortran/51825
	* io/list_read.c (nml_read_obj): Don't end the component loop on a
	nested derived type, but continue with the next loop iteration.
	(nml_get_obj_data): Don't move the first_nl pointer further in the
	list if a qualifier was found.

2013-04-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	Backport from mainline:

	PR libfortran/56786
	* io/list_read.c (nml_parse_qualifier): Remove spurious next_char call
	when checking for EOF. Use error return mechanism when EOF detected.
	Do not return FAILURE unless parse_err_msg and parse_err_msg_size have
	been set. Use hit_eof.
	(nml_get_obj_data): Likewise use the correct error mechanism.
	* io/transfer.c (hit_eof): Do not set AFTER_ENDFILE if in namelist
	mode.

2013-04-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	Backport from mainline:
	2013-03-25  Tilo Schwarz  <tilo@tilo-schwarz.de>

	PR libfortran/52512
	* io/list_read.c (nml_parse_qualifier): To check for a derived type
	don't use the namelist head element type but the current element type.
	(nml_get_obj_data): Add current namelist element type to
	nml_parse_qualifier call.

2013-04-11  Release Manager

	* GCC 4.7.3 released.

2013-04-03  Tobias Burnus  <burnus@net-b.de>

	Backport from mainline:
	2013-03-29  Tobias Burnus  <burnus@net-b.de>

	PR fortran/56737
	* io/format.c (parse_format): With caching, copy
	dtp->format string.
	(save_parsed_format): Use dtp->format directly without
	copying.

	2012-03-29  Tobias Burnus  <burnus@net-b.de>

	PR fortran/56737
	* io/format.c (parse_format_list): Also cache FMT_STRING.
	(parse_format): Update call.

2013-04-03  Tobias Burnus  <burnus@net-b.de>

	Backport from mainline:
	2013-03-28  Tobias Burnus  <burnus@net-b.de>

	PR fortran/56735
	* io/list_read.c (nml_query): Only abort when
	an error occured.
	(namelist_read): Add goto instead of falling through.

2013-02-21  Janne Blomqvist  <jb@gcc.gnu.org>

	PR libfortran/30162
	* io/open.c (test_endfile): Call stell only if size != 0.
	* io/unix.c (raw_tell): Revert r194694.
	(raw_size): Return size field only for regular files, otherwise 0.

2012-12-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/30162
	Backport from trunk
	* io/unix.c (raw_tell):  If the lseek is done on a
	non-seekable file, return 0.

2012-10-12  Thomas König  <tkoenig@gcc.gnu.org>

	PR libfortran/54736
	Backport from trunk
	* runtime/environ.c (search_unit):  Correct logic
	for binary search.
	(mark_single):  Fix index errors.

2012-09-20  Release Manager

	* GCC 4.7.2 released.

2012-09-05  Uros Bizjak  <ubizjak@gmail.com>

	* config/fpu-387.h (set_fpu): Prefix stmxcsr and ldmxcsr with %v.

2012-06-14  Release Manager

	* GCC 4.7.1 released.

2012-05-31  Benjamin Kosnik  <bkoz@redhat.com>

	PR libstdc++/52007
	* configure.ac: Allow gnu, gnu* variants for --enable-symvers argument.
	* configure: Regenerated.

2012-05-12  Tobias Burnus  <burnus@net-b.de>

	PR fortran/53310
	* intrinsics/eoshift2.c (eoshift2): Do not leak
	memory by allocating it in the loop.

2012-03-30  Uros Bizjak  <ubizjak@gmail.com>

	PR libgfortran/52758
	* intrinsics/chmod.c (chmod_func): Remove out-of-bounds
	initialization of rwxXstugo.

2012-03-22  Release Manager

	* GCC 4.7.0 released.

2012-01-20  Tobias Burnus  <burnus@net-b.de>

	PR libgfortran/51899
	* configure.ac: Check whether umask is available.
	* intrinsics/chmod.c (chmod_func): Make compile with MinGW.
	* configure: Regenerate.
	* config.h.in: Regenerate.

2012-01-12  Tobias Burnus  <burnus@net-b.de>

	PR fortran/36755
	* intrinsics/chmod.c (chmod_func): Replace call to /bin/chmod

2012-01-12  Janne Blomqvist  <jb@gcc.gnu.org>

	* configure.ac: Remove check for fdopen.
	* runtime/backtrace.c (CAN_PIPE): Fix comment, remove check for
	fdopen.
	* configure: Regenerated.
	* config.h.in: Regenerated.

2012-01-12  Janne Blomqvist  <jb@gcc.gnu.org>
	    Tobias Burnus  <burnus@net-b.de>

	PR libfortran/51803
	* runtime/main.c (store_exe_path): Avoid malloc if getcwd fails or
	is not available.

2012-01-11  Tobias Burnus  <burnus@net-b.de>

	* runtime/main.c (store_exe_path): Fix absolute path
	detection for Windows.

2012-01-11  Janne Blomqvist  <jb@gcc.gnu.org>
	    Mike Stump  <mikestump@comcast.net>

	PR libfortran/51803
	* runtime/main.c (store_exe_path): Handle getcwd failure and lack
	of the function better.

2012-01-10  Tobias Burnus  <burnus@net-b.de>

	PR fortran/51197
	* runtime/compile_options.c (show_signal): List
	more signals.

2012-01-09  Harald Anlauf  <anlauf@gmx.de>
	    Tobias Burnus  <burnus@net-b.de>

	PR fortran/51197
	* runtime/backtrace.c (show_backtrace): Modify wording written
	before the backtrace.
	* runtime/compile_options.c (show_signal): New function.
	(backtrace_handler): Use it.

2012-01-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* Makefile.am (libgfortran_la_LDFLAGS): Add -Wc,-shared-libgcc.
	* Makefile.in: Regenerate.

2012-01-06  Tobias Burnus <burnus@net-b.de>

	* caf/single.c (_gfortran_caf_register, _gfortran_caf_deregister):
	Fix token handling.
	* caf/mpi.c  (_gfortran_caf_register, _gfortran_caf_deregister): Ditto.
	* caf/libcaf.h (STAT_STOPPED_IMAGE): Sync with libgfortran.h.
	(_gfortran_caf_register, _gfortran_caf_deregister): Update prototype.

Copyright (C) 2012 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
