From: Richard Henderson Date: Fri, 12 Nov 2004 21:26:54 +0000 (-0800) Subject: re PR target/17778 (regression in evaluating long double hexadecimal constants) X-Git-Tag: releases/gcc-3.4.4~522 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=26a8f47c56eca6e8eed7506f05a3b3de15013d0b;p=thirdparty%2Fgcc.git 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: r90544 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a6a209984584..e771c6b5d88d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2004-11-12 Richard Henderson + + 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 * config/rs6000/t-rtems (MULTILIB_NEW_EXCEPTIONS_ONLY): @@ -217,9 +225,9 @@ 2004-10-13 Richard Henderson - 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 diff --git a/gcc/config/i386/freebsd.h b/gcc/config/i386/freebsd.h index 9e538e916a27..4fc7a9ae4786 100644 --- a/gcc/config/i386/freebsd.h +++ b/gcc/config/i386/freebsd.h @@ -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 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) diff --git a/gcc/config/i386/i386-modes.def b/gcc/config/i386/i386-modes.def index 89c83c441872..36c6d42e2d71 100644 --- a/gcc/config/i386/i386-modes.def +++ b/gcc/config/i386/i386-modes.def @@ -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); diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index f5be3409c705..e1f6a5001d17 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -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.