Commit 254a0760 by Joseph Myers Committed by Joseph Myers

i386.c (ix86_float_exceptions_rounding_supported_p): New function.

	* config/i386/i386.c (ix86_float_exceptions_rounding_supported_p):
	New function.
	(TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P): Define.

c-family:
	* c-cppbuiltin.c (cpp_iec_559_value): Test
	flag_excess_precision_cmdline not flag_excess_precision.

From-SVN: r204390
parent 4de9c53f
2013-11-05 Joseph Myers <joseph@codesourcery.com>
* config/i386/i386.c (ix86_float_exceptions_rounding_supported_p):
New function.
(TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P): Define.
2013-11-05 Marc Glisse <marc.glisse@inria.fr> 2013-11-05 Marc Glisse <marc.glisse@inria.fr>
PR tree-optimization/58958 PR tree-optimization/58958
2013-11-05 Joseph Myers <joseph@codesourcery.com>
* c-cppbuiltin.c (cpp_iec_559_value): Test
flag_excess_precision_cmdline not flag_excess_precision.
2013-11-05 Tobias Burnus <burnus@net-b.de> 2013-11-05 Tobias Burnus <burnus@net-b.de>
* c.opt (fopenmp-simd): New option. * c.opt (fopenmp-simd): New option.
......
...@@ -734,7 +734,7 @@ cpp_iec_559_value (void) ...@@ -734,7 +734,7 @@ cpp_iec_559_value (void)
if (flag_iso if (flag_iso
&& !c_dialect_cxx () && !c_dialect_cxx ()
&& TARGET_FLT_EVAL_METHOD != 0 && TARGET_FLT_EVAL_METHOD != 0
&& flag_excess_precision != EXCESS_PRECISION_STANDARD) && flag_excess_precision_cmdline != EXCESS_PRECISION_STANDARD)
ret = 0; ret = 0;
/* Various options are contrary to IEEE 754 semantics. */ /* Various options are contrary to IEEE 754 semantics. */
......
...@@ -43519,6 +43519,18 @@ ix86_memmodel_check (unsigned HOST_WIDE_INT val) ...@@ -43519,6 +43519,18 @@ ix86_memmodel_check (unsigned HOST_WIDE_INT val)
return val; return val;
} }
/* Implement TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P. */
static bool
ix86_float_exceptions_rounding_supported_p (void)
{
/* For x87 floating point with standard excess precision handling,
there is no adddf3 pattern (since x87 floating point only has
XFmode operations) so the default hook implementation gets this
wrong. */
return TARGET_80387 || TARGET_SSE_MATH;
}
/* Initialize the GCC target structure. */ /* Initialize the GCC target structure. */
#undef TARGET_RETURN_IN_MEMORY #undef TARGET_RETURN_IN_MEMORY
#define TARGET_RETURN_IN_MEMORY ix86_return_in_memory #define TARGET_RETURN_IN_MEMORY ix86_return_in_memory
...@@ -43895,6 +43907,10 @@ ix86_memmodel_check (unsigned HOST_WIDE_INT val) ...@@ -43895,6 +43907,10 @@ ix86_memmodel_check (unsigned HOST_WIDE_INT val)
#undef TARGET_SPILL_CLASS #undef TARGET_SPILL_CLASS
#define TARGET_SPILL_CLASS ix86_spill_class #define TARGET_SPILL_CLASS ix86_spill_class
#undef TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P
#define TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P \
ix86_float_exceptions_rounding_supported_p
struct gcc_target targetm = TARGET_INITIALIZER; struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-i386.h" #include "gt-i386.h"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment