]> gcc.gnu.org Git - gcc.git/commitdiff
re PR target/17778 (regression in evaluating long double hexadecimal constants)
authorRichard Henderson <rth@redhat.com>
Fri, 12 Nov 2004 21:15:23 +0000 (13:15 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 12 Nov 2004 21:15:23 +0000 (13:15 -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: r90543

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

index 2b339876c7ec421e1589a36c4cdec59da542ec22..747d9b34faab2507f3981eaf13fd9a9253cbb299 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-11  Geoffrey Keating  <geoffk@apple.com>
 
        * Makefile.in (macro_list): Use move-if-change to avoid spurious
index 04374003398e4512fea688a4f20720652e794b50..08984a342cdd6538e1551898018410d7712bce39 100644 (file)
@@ -138,10 +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;      \
-    }                                                  \
-  } while (0)
+#undef TARGET_96_ROUND_53_LONG_DOUBLE
+#define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT)
index 091c2266fd1b8d631fc926640f8395ec82d99947..ea35a2a1768ee12c9effa3dbd31587266f7c5b8a 100644 (file)
@@ -29,6 +29,8 @@ FLOAT_MODE (TF, 16, ieee_quad_format);
    In LP64 mode, XFmode has size and alignment 16.  */
 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 e3c6d1b8b22a2bd4a1262f0a9bbc071047417e04..7da8f511884d2f2f685006cd277929b996f6e1c1 100644 (file)
@@ -451,6 +451,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.
This page took 0.100423 seconds and 5 git commands to generate.