2011-11-20  Andreas Tobler  <andreast@fgznet.ch>

	* configure: Regenerate.

2011-10-26  Release Manager

	* GCC 4.6.2 released.

2011-09-21  Joseph Myers  <joseph@codesourcery.com>

	* Makefile.am (FLAGS_TO_PASS): Define.
	* Makefile.in: Regenerate.

2011-08-01  Jakub Jelinek  <jakub@redhat.com>

	* math/rem_pio2q.c (__quadmath_kernel_rem_pio2): Fix up fq to y
	conversion for prec 3 and __FLT_EVAL_METHOD__ != 0.

2011-06-27  Release Manager

	* GCC 4.6.1 released.

2011-03-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	Backport from mainline:
	2011-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR bootstrap/48135
	* configure.ac (quadmath_use_symver): Handle --disable-symvers.
	* configure: Regenerate.

2011-03-26  Jakub Jelinek  <jakub@redhat.com>

	Backport from mainline
	2011-03-25  Jakub Jelinek  <jakub@redhat.com>

	* printf/printf_fp.c (__quadmath_printf_fp): Use memcpy instead of
	mempcpy.

2011-03-25  Release Manager

	* GCC 4.6.0 released.

2011-02-28  Jakub Jelinek  <jakub@redhat.com>

	* printf/quadmath-printf.c (quadmath_snprintf): Make sure
	that for size > 0 str is always zero terminated.

2011-02-20  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/47827
	* printf/quadmath-printf.h (NAN): Redefine to __builtin_nanf ("").

2011-02-17  Jakub Jelinek  <jakub@redhat.com>

	* libquadmath.texi (FLT128_DIG, FLT128_MIN_10_EXP,
	FLT128_MAX_10_EXP): Document.
	(strtoflt128): Remove obsolete comment.
	* configure.ac (HAVE_STRTOULL): New check.
	* printf/gmp-impl.h (mpn_construct_float128): New prototype,
	define.
	* printf/mul_n.c: Include <config.h>.
	* printf/add_n.c: Likewise.
	* printf/cmp.c: Likewise.
	* printf/fpioconst.c: Likewise.
	* printf/mul_1.c: Likewise.
	* printf/rshift.c: Likewise.
	* printf/lshift.c: Likewise.
	* printf/submul_1.c: Likewise.
	* printf/sub_n.c: Likewise.
	* printf/divrem.c: Likewise.
	* printf/addmul_1.c: Likewise.
	* printf/mul.c: Likewise.
	* printf/quadmath-printf.h (isupper, isdigit, tolower): Change
	to avoid evaluating argument multiple times.
	(isxdigit): Redefine.
	* strtod/strtoflt128.c: New file.
	* strtod/strtod_l.c: New file.
	* strtod/mpn2flt128.c: New file.
	* strtod/grouping.h: New file.
	* strtod/tens_in_limb.c: New file.
	* gdtoa/arith.h: Removed.
	* gdtoa/gd_qnan.h: Removed.
	* gdtoa/gdtoa_fltrnds.h: Removed.
	* gdtoa/gdtoa.h: Removed.
	* gdtoa/gdtoaimp.h: Removed.
	* gdtoa/gethex.c: Removed.
	* gdtoa/gmisc.c: Removed.
	* gdtoa/hd_init.c: Removed.
	* gdtoa/hexnan.c: Removed.
	* gdtoa/makefile: Removed.
	* gdtoa/misc.c: Removed.
	* gdtoa/README.gdtoa: Removed.
	* gdtoa/smisc.c: Removed.
	* gdtoa/strtodg.c: Removed.
	* gdtoa/strtopQ.c: Removed.
	* gdtoa/sum.c: Removed.
	* quadmath.h (FLT128_DIG, FLT128_MIN_10_EXP, FLT128_MAX_10_EXP):
	Define.
	* Makefile.am (libquadmath_la_SOURCES): Remove gdtoa/*, add
	strtod/strtoflt128.c, strtod/mpn2flt128.c and strtod/tens_in_limb.c.
	* config.h.in: Regenerated.
	* configure: Regenerated.
	* Makefile.in: Regenerated.

2011-02-16  Jakub Jelinek  <jakub@redhat.com>

	* printf/quadmath-printf.c: Also check __GLIBC__ when checking
	whether workarounds for printf hook handling should be added.

	* configure.ac: Check for locale.h too.
	(USE_LOCALE_SUPPORT): Remove check.
	(USE_NL_LANGINFO, USE_NL_LANGINFO_WC, USE_LOCALECONV): New checks.
	(USE_I18_NUMBER_H): Check also for _NL_CTYPE_MB_CUR_MAX.
	* printf/printf_fphex.c (__quadmath_printf_fphex): Use nl_langinfo
	or localeconv for narrow version and nl_langinfo if USE_NL_LANGINFO_WC
	for wide version.
	* printf/quadmath-printf.h: Include locale.h if HAVE_LOCALE_H.
	* printf/printf_fp.c (USE_I18N_NUMBER_H): Don't define to 0.
	(__quadmath_printf_fp): Use nl_langinfo or localeconv for narrow
	version and nl_langinfo if USE_NL_LANGINFO_WC for wide version.
	Guard nl_langinfo (_NL_CTYPE_MB_CUR_MAX) use with
	USE_I18N_NUMBER_H #ifdef.
	* configure: Regenerated.
	* config.h.in: Regenerated.

2011-02-14  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/47736
	* configure.ac (HAVE_PRINTF_HOOKS): Test if printf_info struct has
	user field.
	* printf/quadmath-printf.c (quadmath_snprintf): Clear whole info
	field instead of setting individual fields to 0.  Don't set info.user
	to -1.
	* configure: Regenerated.

	* configure.ac (HAVE_HIDDEN_VISIBILITY): Test with -Werror in CFLAGS.
	* printf/printf_fp.c: Don't include <alloca.h>.
	* printf/quadmath-printf.h (_itoa): Redefine to __quadmath_itoa.
	* configure: Regenerated.

	PR fortran/47642
	* libquadmath.texi (quadmath_snprintf): Document.
	(quadmath_flt128tostr): Remove.
	* Makefile.am (libquadmath_la_SOURCES): Add printf/*.c.
	Remove  quadmath_io.c, gdtoa/gdtoa.c, gdtoa/g__fmt.c,
	gdtoa/g_Qfmt.c, gdtoa/dmisc.c and gdtoa/ulp.c.
	* quadmath.h (quadmath_snprintf): New prototype.
	(quadmath_flt128tostr): Remove.
	* quadmath_weak.h (quadmath_snprintf): Add.
	(quadmath_flt128tostr): Remove.
	* configure.ac: New AC_CHECK_HEADERS headers: langinfo.h, wchar.h,
	wctype.h, limits.h, ctype.h, printf.h, errno.h.
	(AC_USE_SYSTEM_EXTENSIONS): Add.
	(HAVE_HIDDEN_VISIBILITY, HAVE_PRINTF_HOOKS,
	USE_LOCALE_SUPPORT, USE_I18N_NUMBER_H): New checks.
	* quadmath.map (QUADMATH_1.0): Add quadmath_snprintf.  Remove
	quadmath_flt128tostr.
	* printf/printf_fphex.c: New file.
	* printf/_itowa.h: New file.
	* printf/mul_n.c: New file.
	* printf/quadmath-printf.h: New file.
	* printf/submul_1.c: New file.
	* printf/quadmath-printf.c: New file.
	* printf/gmp-impl.h: New file.
	* printf/lshift.c: New file.
	* printf/fpioconst.h: New file.
	* printf/add_n.c: New file.
	* printf/cmp.c: New file.
	* printf/sub_n.c: New file.
	* printf/mul.c: New file.
	* printf/divrem.c: New file.
	* printf/addmul_1.c: New file.
	* printf/printf_fp.c: New file.
	* printf/_itoa.h: New file.
	* printf/fpioconst.c: New file.
	* printf/_i18n_number.h: New file.
	* printf/flt1282mpn.c: New file.
	* printf/rshift.c: New file.
	* printf/mul_1.c: New file.
	* quadmath_io.c: Removed.
	* gdtoa/gdtoa.c: Removed.
	* gdtoa/g__fmt.c: Removed.
	* gdtoa/g_Qfmt.c: Removed.
	* gdtoa/dmisc.c: Removed.
	* gdtoa/ulp.c: Removed.
	* config.h.in: Regenerated.
	* configure: Regenerated.
	* Makefile.in: Regenerated.

2011-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in: Regenerate.
	* aclocal.m4: Likewise.
	* configure: Likewise.

2011-01-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libquadmath/47293
	* gdtoa/qd_qnan.h: Fix NAN bit patterns.
	* gdtoa/strtopQ.c (strtoflt128): Handle endianess with NAN.

2011-01-17  Tobias Burnus  <burnus@net-b.de>

	PR fortran/47295
	* libquadmath.text: Document typedef and constants.

2011-01-17  Tobias Burnus  <burnus@net-b.de>

	PR fortran/46817
	* quadmath-imp.h: Refer to libquadmath not ot libiberty,
	bump copyright year and use /**/ instead of // comments.
	* quadmath.h: Ditto.
	* quadmath-weak.h: Ditto.
	* quadmath_io.c: Ditto.

2011-01-16  Jakub Jelinek  <jakub@redhat.com>

	PR libfortran/47322
	* math/remquoq.c (remquoq): Use uint64_t type instead of u_int64_t.

	PR fortran/46625
	* quadmath.map (QUADMATH_1.0): Remove quadmath_strtopQ
	and quadmath_dtoaq.  Add strtoflt128 and quadmath_flt128tostr.
	* quadmath_weak.h (quadmath_strtopQ, quadmath_dtoaq): Remove.
	(strtoflt128, quadmath_flt128tostr): Add.
	* gdtoa/strtopQ.c (quadmath_strtopQ): Rename to...
	(strtoflt128): ... this.  Return __float128, instead of writing
	to memory pointed by last argument.
	* quadmath.h: Use C style comments instead of C++ style.
	(quadmath_strtopQ, quadmath_dtoaq): Remove prototypes.
	(strtoflt128, quadmath_flt128tostr): Add prototypes.
	* libquadmath.texi (quadmath_dtoaq): Rename to quadmath_flt128tostr.
	(quadmath_strtopQ): Rename to strtoflt128.  Adjust prototype,
	adjust examples.
	* quadmath_io.c (quadmath_dtoaq): Rename to...
	(quadmath_flt128tostr): ... this.

	* quadmath.h (__quadmath_throw, __quadmath_nth): Define.
	Use it for all prototypes.

	PR fortran/46416
	* quadmath.h (cbrtq, finiteq, isnanq, signbitq, sqrtq): Remove
	const from prototype argument.
	(cimagq, conjq, cprojq, crealq, fdimq, fmaxq, fminq, ilogbq,
	llrintq, log2q, lrintq, nearbyintq, remquoq): New prototypes.
	(__quadmath_extern_inline): Define.
	(cimagq, conjq, crealq): New inlines.
	* Makefile.am (libquadmath_la_SOURCES): Add math/cimagq.c,
	math/conjq.c, math/cprojq.c, math/crealq.c, math/fdimq.c,
	math/fmaxq.c, math/fminq.c, math/ilogbq.c, math/llrintq.c,
	math/log2q.c, math/lrintq.c, math/nearbyintq.c and math/remquoq.c.
	* Makefile.in: Regenerated.
	* quadmath_weak.h (cimagq, conjq, cprojq, crealq, fdimq, fmaxq,
	fminq, ilogbq, llrintq, log2q, lrintq, nearbyintq, remquoq): Add.
	* quadmath-imp.h (__LITTLE_ENDIAN__): Don't define.
	(ieee854_float128): Use __BYTE_ORDER == __ORDER_BIG_ENDIAN__
	tests instead of __BIG_ENDIAN__.
	* quadmath.map (QUADMATH_1.0): Add cimagq, conjq, cprojq, crealq,
	fdimq, fmaxq, fminq, ilogbq, llrintq, log2q, lrintq, nearbyintq
	and remquoq.
	* libquadmath.texi (cimagq, conjq, cprojq, crealq, fdimq, fmaxq,
	fminq, ilogbq, llrintq, log2q, lrintq, nearbyintq, remquoq): Add.
	* math/cprojq.c: New file.
	* math/ilogbq.c: New file.
	* math/fminq.c: New file.
	* math/llrintq.c: New file.
	* math/log2q.c: New file.
	* math/lrintq.c: New file.
	* math/crealq.c: New file.
	* math/nearbyintq.c: New file.
	* math/fmaxq.c: New file.
	* math/conjq.c: New file.
	* math/remquoq.c: New file.
	* math/cimagq.c: New file.
	* math/fdimq.c: New file.

	* math/ldexpq.c: Include errno.h.  Set errno to ERANGE if needed.

	PR fortran/46416
	* quadmath.h (cacosq, cacoshq, casinq, casinhq, catanq, catanhq):
	New prototypes.
	(M_Eq, M_LOG2Eq, M_LOG10Eq, M_LN2q, M_LN10q, M_PIq, M_PI_2q, M_PI_4q,
	M_1_PIq, M_2_PIq, M_2_SQRTPIq, M_SQRT2q, M_SQRT1_2q): Define.
	* quadmath_weak.h (cacosq, cacoshq, casinq, casinhq, catanq,
	catanhq): Add.
	* quadmath-imp.h (fpclassifyq, QUADFP_NAN, QUADFP_INFINITE,
	QUADFP_ZERO, QUADFP_SUBNORMAL, QUADFP_NORMAL): Define.
	* quadmath.map (QUADMATH_1.0): Add cacosq, cacoshq, casinq, casinhq,
	catanq and catanhq.
	* Makefile.am (libquadmath_la_SOURCES): Add math/cacosq.c,
	math/cacoshq.c, math/casinq.c, math/casinhq.c, math/catanq.c
	and math/catanhq.c.
	* Makefile.in: Regenerated.
	* libquadmath.texi (cacosq, cacoshq, casinq, casinhq,
	catanq, catanhq): Add.
	* math/cacoshq.c: New file.
	* math/cacosq.c: New file.
	* math/catanq.c: New file.
	* math/catanhq.c: New file.
	* math/casinq.c: New file.
	* math/casinhq.c: New file.

	* math/hypotq.c (hypotq): Use Q suffix instead of L.
	* math/atan2q.c (tiny, pi_o_4, pi_o_2, pi, pi_lo, atan2q): Likewise.
	* math/cosq.c (cosq): Likewise.

	PR fortran/46402
	* quadmath.map (QUADMATH_1.0): Add fmaq.
	* configure.ac: Check for fenv.h, feholdexcept, fesetround,
	feupdateenv, fesetenv and fetestexcept.
	* configure: Regenerated.
	* config.h.in: Regenerated.
	* quadmath.h (fmaq): New prototype.
	* quadmath_weak.h (fmaq): Add.
	* Makefile.am (libquadmath_la_SOURCES): Add math/fmaq.c.
	* Makefile.in: Regenerated.
	* quadmath-imp.h: Include config.h.
	* math/expq.c: Include fenv.h.
	(USE_FENV_H): Define if libm support for fe* is there.
	(expq): Add fesetround etc. support if USE_FENV_H is defined.
	* math/fmaq.c: New file.
	* libquadmath.texi (fmaq): Add.

2011-01-14  Tobias Burnus  <burnus@net-b.de>

	PR fortran/47182
	* configure.ac: Use ACX_BUGURL.
	* libquadmath.texi: Include libquadmath-vers.texi for BUGURL.
	* Makefile.am: Create libquadmath-vers.texi.
	* configure.in: Regenerate.
	* Makefile.in: Regenerate.

2011-01-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	PR fortran/47174
	* Makefile.am (libquadmath.info): Unconditionally override
	target, not only if BUILD_LIBQUADMATH.
	* Makefile.in: Regenerate.
	* configure.ac (AM_INIT_AUTOMAKE): Add -Wno-override option to
	avoid warning from automake.

2010-12-19  Tobias Burnus  <burnus@net-b.de>

	PR fortran/46520
	* configure.ac: Do not call AC_CHECK_LIB for gcc_no_link.
	* configure: Regenerate

2010-12-13  Tobias Burnus  <burnus@net-b.de>

	PR fortran/46625
	* gdtoa/gdtoaimp.h: Mangle internal functions by
	prefixing them with __quadmath. Don't use gdtoa's strcp(y).
	* gdtoa/g_Qfmt.c (g_Qfmt): Use strcpy instead of strcp.
	* gdtoa/misc.c (strcpy): Renamed from strcp and only use
	if NO_STRING_H is set.
	* quadmath-imp.h (__quadmath_rem_pio2q, __quadmath_kernel_sincosq
	__quadmath_kernel_sinq, __quadmath_kernel_cosq): Added
	__quadmath prefix to internal functions.
	* math/cosq.c (cosq): Ditto.
	* math/sinq.c (cosq): Ditto.
	* math/tanq.c (tanq,__quadmath_kernel_tanq): Ditto.
	* math/rem_pio2q.c (rem_pio2, __quadmath_kernel_rem_pio2): Ditto.
	* math/sinq_kernel.c (__quadmath_kernel_sinq): Ditto.
	* math/cosq_kernel.c (__quadmath_kernel_cosq): Ditto.

2010-12-08  Tobias Burnus  <burnus@net-b.de>

	PR fortran/46772
	* gdtoa/gdtoa.h: Include stdlib.h instead of declare strtod.
	* gdtoa/gdtoaimp.h: Don't declare strtod.

2010-12-08  Tobias Burnus  <burnus@net-b.de>

	PR fortran/46520
	* configure.ac: Use GCC_TRY_COMPILE_OR_LINK instead of
	AC_TRY_LINK and cache libquad_have_float128.
	* configure: Regenerate.

2010-12-08  Tobias Burnus  <burnus@net-b.de>

	PR fortran/46543
	* configure.ac: Add texinfo checks.
	* Makefile.am: Handle .texi documentation.
	* libquadmath.texi: New.
	* configure: Regenerated.
	* Makefile.in: Regenerated.

2010-12-06  Tobias Burnus  <burnus@net-b.de>

	PR fortran/46817
	* quadmath-imp.h: Add LGPL header.
	* quadmath.h: Add LGPL header.
	* quadmath_io.c: Add LGPL header.
	* quadmath_weak.h: Add LGPL header.

2010-12-06  Dave Korn  <dave.korn.cygwin@gmail.com>

	PR target/40125
	PR lto/46695
	* configure.ac: Invoke ACX_LT_HOST_FLAGS.
	* Makefile.am (libquadmath_la_LDFLAGS): Use lt_host_flags.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* Makefile.in: Regenerate.

2010-11-30  Tobias Burnus  <burnus@net-b.de>

	PR fortran/46594
	* Makefile.am: Install include files in
	target/version specific directory.
	* Makefile.in: Regenerate.

2010-11-30  Tobias Burnus  <burnus@net-b.de>

	* acinclude.m4 (LIBGOMP_CHECK_SYNC_BUILTINS,
	LIBGOMP_CHECK_ATTRIBUTE_VISIBILITY,
	LIBGOMP_CHECK_ATTRIBUTE_DLLEXPORT): Remove.

2010-11-29  Kai Tietz  <kai.tietz@onevision.com>

	* configure: Regenerated.
	* Makefile.in: Regenerated.
	* configure.ac (ACX_NONCANONICAL_TARGET): Call it.
	(target_alias): Use AC_SUBST for it.
	(GCC_NO_EXECUTABLES): Call it.
	(AC_PROG_CC): Improve multilib handling.
	Check that gcc is used for compilation.
	Use pattern from libssp for symbol versioning checking.
	* Makefile.am (LTLDFLAGS): Removed.
	(libquadmath_la_LDFLAGS): Add -no-undefined.
	(libquadmath_la_LINK): Commented out.
	(libquadmath_la_DEPENDENCIES): Add libquadmath_la_LIBADD.
	(AM_MAKEFLAGS): Add hack for argument passing by top-level.
	(MAKEOVERRIDES): New.
	* aclocal.m4: Regenerated.

2010-11-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* Makefile.am (libquadmath_la_LIBADD): Move -lm ...
	(libquadmath_la_LDFLAGS): ... here.
	(quadmath.map-sun): Tabify.
	Fix sed expression.
	* Makefile.in: Regenerate.

2010-11-16  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
	    Tobias Burnus  <burnus@net-b.de>

	PR fortran/32049
	Initial implementation and checkin.
