Go to file
Joseph Myers 8ce94e4446 re PR middle-end/323 (optimized code gives strange floating point results)
PR rtl-optimization/323
	* c-common.c (c_fully_fold, convert_and_check,
	c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
	(c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
	* c-common.def (EXCESS_PRECISION_EXPR): New.
	* c-cppbuiltin.c (builtin_define_float_constants): Define
	constants with enough digits for long double.
	* c-lex.c (interpret_float): Interpret constant with excess
	precision where appropriate.
	* c-opts.c (c_common_post_options): Set
	flag_excess_precision_cmdline.  Give an error for
	-fexcess-precision=standard for C++ for processors where the
	option is significant.
	* c-parser.c (c_parser_conditional_expression): Handle excess
	precision in condition.
	* c-typeck.c (convert_arguments): Handle arguments with excess
	precision.
	(build_unary_op): Move excess precision outside operation.
	(build_conditional_expr): Likewise.
	(build_compound_expr): Likewise.
	(build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
	(build_modify_expr): Handle excess precision in RHS.
	(convert_for_assignment): Handle excess precision in converted
	value.
	(digest_init, output_init_element, process_init_element): Handle
	excess precision in initializer.
	(c_finish_return): Handle excess precision in return value.
	(build_binary_op): Handle excess precision in operands and add
	excess precision as needed for operation.
	* common.opt (-fexcess-precision=): New option.
	* config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
	* config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
	For standard excess precision, output explicit conversion to and
	truncation from XFmode.
	(*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
	*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
	*float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
	define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
	define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
	floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
	divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
	*fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
	*fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
	define_splits, sqrt<mode>2): Disable where appropriate for
	standard excess precision.
	* convert.c (convert_to_real): Do not shorten arithmetic to type
	for which excess precision would be used.
	* defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
	* doc/invoke.texi (-fexcess-precision=): Document option.
	(-mfpmath=): Correct index entry.
	* flags.h (enum excess_precision, flag_excess_precision_cmdline,
	flag_excess_precision): New.
	* langhooks.c (lhd_post_options): Set
	flag_excess_precision_cmdline.
	* opts.c (common_handle_option): Handle -fexcess-precision=.
	* toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
	init_excess_precision): New.
	(lang_dependent_init_target): Call init_excess_precision.
	* tree.c (excess_precision_type): New.
	* tree.h (excess_precision_type): Declare.

ada:
	* gcc-interface/misc.c (gnat_post_options): Set
	flag_excess_precision_cmdline.  Give an error for
	-fexcess-precision=standard for processors where the option is
	significant.

fortran:
	* options.c (gfc_post_options): Set
	flag_excess_precision_cmdline.  Give an error for
	-fexcess-precision=standard for processors where the option is
	significant.

java:
	* lang.c (java_post_options): Set flag_excess_precision_cmdline.
	Give an error for -fexcess-precision=standard for processors where
	the option is significant.

testsuite:
	* gcc.target/i386/excess-precision-1.c,
	gcc.target/i386/excess-precision-2.c,
	gcc.target/i386/excess-precision-3.c,
	gcc.target/i386/excess-precision-4.c,
	gcc.target/i386/excess-precision-5.c,
	gcc.target/i386/excess-precision-6.c: New tests.

From-SVN: r145272
2009-03-30 02:50:44 +01:00
boehm-gc backport: Support GNU/kOpenSolaris. 2009-03-01 17:49:31 +00:00
config mh-cygwin (LDFLAGS): Add linker option to increase stack limit up to 8MB. 2009-02-11 11:50:50 +01:00
contrib check_warning_flags.sh: Update flag exceptions. 2009-03-01 11:24:03 +00:00
fixincludes math.h, [...]: Update. 2009-03-29 19:32:48 +01:00
gcc re PR middle-end/323 (optimized code gives strange floating point results) 2009-03-30 02:50:44 +01:00
gnattools Add PR ref. 2009-02-27 09:56:42 +00:00
include decl.c (grokfndecl): Set DECL_CONTEXT on parms. 2009-03-17 19:31:18 -04:00
INSTALL
intl Makefile.tpl ($(srcdir)/configure): Update dependencies. 2008-06-17 23:13:35 +00:00
libada re PR ada/5911 (Support for multilib in Ada) 2008-09-21 11:45:23 +00:00
libcpp re PR preprocessor/34695 (Preprocessor warning->error conversion from -Werror is silent) 2009-03-29 23:56:07 +01:00
libdecnumber Temporarily revert revision 145222. 2009-03-30 10:44:21 +11:00
libffi backport: Support GNU/kOpenSolaris. 2009-03-01 17:49:31 +00:00
libgcc inclhack.def (aix_syswait, [...]): Remove. 2009-03-28 06:51:09 +00:00
libgfortran re PR libfortran/33595 (FAIL: gfortran.dg/nint_2.f90 -O0 execution test) 2009-03-28 21:15:45 +00:00
libgomp atomic-5.c: Cleanup cpuid usage. 2009-03-25 14:36:02 +01:00
libiberty memmem.c: New file, from gnulib. 2009-03-27 22:38:23 +00:00
libjava configure.ac: Detect xulrunner-1.9. 2009-03-16 12:08:23 +00:00
libmudflap backport: Support GNU/kOpenSolaris. 2009-03-01 17:49:31 +00:00
libobjc re PR libobjc/27466 (RFE: Support for libobjc equivalent of std::set_unexpected) 2009-03-12 22:28:15 +00:00
libssp backport: Support GNU/kOpenSolaris. 2009-03-01 17:49:31 +00:00
libstdc++-v3 hashtable.h (_S_num_primes): Change to 29. 2009-03-27 22:01:15 +00:00
maintainer-scripts crontab: Stop 4.2 snapshots. 2009-03-28 20:31:52 +00:00
zlib backport: Support GNU/kOpenSolaris. 2009-03-01 17:49:31 +00:00
ABOUT-NLS
ChangeLog Update my email address. 2009-03-25 09:14:46 +01:00
ChangeLog.tree-ssa
compile
config-ml.in
config.guess * config.sub, config.guess: Update from upstream sources. 2008-12-18 14:27:27 +11:00
config.rpath
config.sub * config.sub, config.guess: Update from upstream sources. 2008-12-18 14:27:27 +11:00
configure configure: Rebuild. 2009-03-18 23:32:36 +00:00
configure.ac configure: Rebuild. 2009-03-18 23:32:36 +00:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
depcomp
install-sh
libtool-ldflags
libtool.m4 backport: Support GNU/kOpenSolaris. 2009-03-01 17:49:31 +00:00
lt~obsolete.m4 libtool.m4: Update to libtool 2.2.6. 2008-09-26 16:21:02 +00:00
ltgcc.m4 libtool.m4: Update to libtool 2.2.6. 2008-09-26 16:21:02 +00:00
ltmain.sh libtool.m4: Update to libtool 2.2.6. 2008-09-26 16:21:02 +00:00
ltoptions.m4 libtool.m4: Update to libtool 2.2.6. 2008-09-26 16:21:02 +00:00
ltsugar.m4 libtool.m4: Update to libtool 2.2.6. 2008-09-26 16:21:02 +00:00
ltversion.m4 libtool.m4: Update to libtool 2.2.6. 2008-09-26 16:21:02 +00:00
MAINTAINERS Update my email address. 2009-03-25 09:14:46 +01:00
Makefile.def configure: Rebuild. 2009-03-18 23:32:36 +00:00
Makefile.in configure: Rebuild. 2009-03-18 23:32:36 +00:00
Makefile.tpl Makefile.tpl (stage_last): Define $r and $s before using $(RECURSE_FLAGS_TO_PASS). 2009-02-05 15:29:52 +00:00
missing
mkdep
mkinstalldirs
move-if-change
README
symlink-tree
ylwrap

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the file COPYING
for copying permission.  The manuals, and some of the runtime
libraries, are under different terms; see the individual source files
for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs.html for how to report bugs usefully.