re PR target/17778 (regression in evaluating long double hexadecimal constants)
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
This commit is contained in:
parent
690e11b8f5
commit
cc69336f16
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue