aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-cppbuiltin.c2
-rw-r--r--gcc/config/i386/i386.c16
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4b639e0..514b97e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+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>
PR tree-optimization/58958
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 9cd9e79..2de4c39 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+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>
* c.opt (fopenmp-simd): New option.
diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c
index 09c75c4..61a124c 100644
--- a/gcc/c-family/c-cppbuiltin.c
+++ b/gcc/c-family/c-cppbuiltin.c
@@ -734,7 +734,7 @@ cpp_iec_559_value (void)
if (flag_iso
&& !c_dialect_cxx ()
&& TARGET_FLT_EVAL_METHOD != 0
- && flag_excess_precision != EXCESS_PRECISION_STANDARD)
+ && flag_excess_precision_cmdline != EXCESS_PRECISION_STANDARD)
ret = 0;
/* Various options are contrary to IEEE 754 semantics. */
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 11064d8..771fabe 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -43519,6 +43519,18 @@ ix86_memmodel_check (unsigned HOST_WIDE_INT 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. */
#undef TARGET_RETURN_IN_MEMORY
#define TARGET_RETURN_IN_MEMORY ix86_return_in_memory
@@ -43895,6 +43907,10 @@ ix86_memmodel_check (unsigned HOST_WIDE_INT val)
#undef TARGET_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;
#include "gt-i386.h"