]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/17778 (regression in evaluating long double hexadecimal constants)
authorRichard Henderson <rth@redhat.com>
Fri, 12 Nov 2004 21:26:54 +0000 (13:26 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 12 Nov 2004 21:26:54 +0000 (13:26 -0800)
        PR 17778
        * config/i386/i386.h (TARGET_96_ROUND_53_LONG_DOUBLE): New.
        * config/i386/freebsd.h (SUBTARGET_OVERRIDE_OPTIONS): Remove.
        (TARGET_96_ROUND_53_LONG_DOUBLE): New.
        * config/i386/i386-modes.def (XF): Use it.

From-SVN: r90544

gcc/ChangeLog
gcc/config/i386/freebsd.h
gcc/config/i386/i386-modes.def
gcc/config/i386/i386.h

index a6a209984584056550ac86c8e4c5e379321247c4..e771c6b5d88d81ad7ecda0f156b281ff1b7f3da6 100644 (file)
@@ -1,3 +1,11 @@
+2004-11-12  Richard Henderson  <rth@redhat.com>
+
+       PR 17778
+       * config/i386/i386.h (TARGET_96_ROUND_53_LONG_DOUBLE): New.
+       * config/i386/freebsd.h (SUBTARGET_OVERRIDE_OPTIONS): Remove.
+       (TARGET_96_ROUND_53_LONG_DOUBLE): New.
+       * config/i386/i386-modes.def (XF): Use it.
+
 2004-11-12  Ralf Corsepius  <ralf.corsepius@rtems.org>
 
        * config/rs6000/t-rtems (MULTILIB_NEW_EXCEPTIONS_ONLY):
 
 2004-10-13  Richard Henderson  <rth@redhat.com>
 
-        PR debug/15860
-        * dwarf2out.c (rtl_for_decl_location): Apply big-endian correction
-        for DECL_INCOMING_RTL.
+       PR debug/15860
+       * dwarf2out.c (rtl_for_decl_location): Apply big-endian correction
+       for DECL_INCOMING_RTL.
 
 2004-10-13  Richard Henderson  <rth@redhat.com>
 
index 9e538e916a27f29f3ee483f958929e0b79abf5a2..4fc7a9ae4786814720608c1574ab9dc8a1c4d218 100644 (file)
@@ -138,12 +138,5 @@ Boston, MA 02111-1307, USA.  */
 
 /* FreeBSD sets the rounding precision of the FPU to 53 bits.  Let the
    compiler get the contents of <float.h> and std::numeric_limits correct.  */
-#define SUBTARGET_OVERRIDE_OPTIONS                     \
-  do {                                                 \
-    if (!TARGET_64BIT) {                               \
-      REAL_MODE_FORMAT (XFmode)                                \
-       = &ieee_extended_intel_96_round_53_format;      \
-      REAL_MODE_FORMAT (TFmode)                                \
-       = &ieee_extended_intel_96_round_53_format;      \
-    }                                                  \
-  } while (0)
+#undef TARGET_96_ROUND_53_LONG_DOUBLE
+#define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT)
index 89c83c4418720c987f189ff2b60989f02db5c1d7..36c6d42e2d717ab7fd2f809b2aece46bf8127b9c 100644 (file)
@@ -29,6 +29,8 @@ Boston, MA 02111-1307, USA.  */
 FLOAT_MODE (XF, 12, ieee_extended_intel_96_format);
 ADJUST_FLOAT_FORMAT (XF, (TARGET_128BIT_LONG_DOUBLE
                          ? &ieee_extended_intel_128_format
+                         : TARGET_96_ROUND_53_LONG_DOUBLE
+                         ? &ieee_extended_intel_96_round_53_format
                          : &ieee_extended_intel_96_format));
 ADJUST_BYTESIZE  (XF, TARGET_128BIT_LONG_DOUBLE ? 16 : 12);
 ADJUST_ALIGNMENT (XF, TARGET_128BIT_LONG_DOUBLE ? 16 : 4);
index f5be3409c705fbc1d77e4a932e725fe43c9ca449..e1f6a5001d17d1941c31e913bf482a23a94ed3d3 100644 (file)
@@ -447,6 +447,10 @@ extern int x86_prefetch_sse;
    redefines this to 1.  */
 #define TARGET_MACHO 0
 
+/* Subtargets may reset this to 1 in order to enable 96-bit long double
+   with the rounding mode forced to 53 bits.  */
+#define TARGET_96_ROUND_53_LONG_DOUBLE 0
+
 /* This macro is similar to `TARGET_SWITCHES' but defines names of
    command options that have values.  Its definition is an
    initializer with a subgrouping for each command option.