diff options
author | schwab <schwab@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-03 14:32:43 +0000 |
---|---|---|
committer | schwab <schwab@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-03 14:32:43 +0000 |
commit | 604c77da256415c139a223b79136b93b64e5d2c5 (patch) | |
tree | b23bf23815638d9880bbb2f271bb74a3a45a507c | |
parent | d35623529bf21cf63a49db42a94e25056c85264e (diff) | |
download | gcc-604c77da256415c139a223b79136b93b64e5d2c5.tar.gz |
* config/m68k/m68k.c (override_options): Don't override
REAL_MODE_FORMAT.
* config/m68k/m68k-modes.def (SF, DF): Define to use
motorola_single_format and motorola_double_format, resp.
* real.c (motorola_single_format): Renamed from
coldfire_single_format.
(motorola_double_format): Renamed from coldfire_double_format.
(encode_ieee_extended): Generate a proper canonical NaN image
respecting canonical_nan_lsbs_set.
(ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
true.
* real.h: Adjust declarations.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125295 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/config/m68k/m68k-modes.def | 6 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.c | 8 | ||||
-rw-r--r-- | gcc/real.c | 18 | ||||
-rw-r--r-- | gcc/real.h | 6 |
5 files changed, 37 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c1b2d93c518..a336afc5fc1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2007-06-03 Andreas Schwab <schwab@suse.de> + + * config/m68k/m68k.c (override_options): Don't override + REAL_MODE_FORMAT. + * config/m68k/m68k-modes.def (SF, DF): Define to use + motorola_single_format and motorola_double_format, resp. + * real.c (motorola_single_format): Renamed from + coldfire_single_format. + (motorola_double_format): Renamed from coldfire_double_format. + (encode_ieee_extended): Generate a proper canonical NaN image + respecting canonical_nan_lsbs_set. + (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to + true. + * real.h: Adjust declarations. + 2007-06-03 Kaz Kojima <kkojima@gcc.gnu.org> PR target/32163 diff --git a/gcc/config/m68k/m68k-modes.def b/gcc/config/m68k/m68k-modes.def index e6f782f5fba..d600446bcf9 100644 --- a/gcc/config/m68k/m68k-modes.def +++ b/gcc/config/m68k/m68k-modes.def @@ -1,5 +1,5 @@ /* M68k extra machine modes. - Copyright (C) 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc. This file is part of GCC. @@ -18,5 +18,9 @@ along with GCC; see the file COPYING. If not, write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +/* These differ in the representation of the canonical NaN. */ +RESET_FLOAT_FORMAT (SF, motorola_single_format); +RESET_FLOAT_FORMAT (DF, motorola_double_format); + /* 80-bit floating point (IEEE extended, in a 96-bit field) */ FRACTIONAL_FLOAT_MODE (XF, 80, 12, ieee_extended_motorola_format); diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 7001e294d1d..1ce704258ba 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -1,6 +1,6 @@ /* Subroutines for insn-output.c for Motorola 68000 family. Copyright (C) 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2003, 2004, 2005, 2006 + 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GCC. @@ -541,12 +541,6 @@ override_options (void) : (m68k_cpu_flags & FL_COLDFIRE) != 0 ? FPUTYPE_COLDFIRE : FPUTYPE_68881); - if (TARGET_COLDFIRE_FPU) - { - REAL_MODE_FORMAT (SFmode) = &coldfire_single_format; - REAL_MODE_FORMAT (DFmode) = &coldfire_double_format; - } - /* Sanity check to ensure that msep-data and mid-sahred-library are not * both specified together. Doing so simply doesn't make sense. */ diff --git a/gcc/real.c b/gcc/real.c index 867fdc70b03..9a84329f975 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -1,6 +1,6 @@ /* real.c - software floating point emulation. Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + 2000, 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. Contributed by Stephen L. Moshier (moshier@world.std.com). Re-written by Richard Henderson <rth@redhat.com> @@ -2774,7 +2774,7 @@ const struct real_format mips_single_format = true }; -const struct real_format coldfire_single_format = +const struct real_format motorola_single_format = { encode_ieee_single, decode_ieee_single, @@ -3019,7 +3019,7 @@ const struct real_format mips_double_format = true }; -const struct real_format coldfire_double_format = +const struct real_format motorola_double_format = { encode_ieee_double, decode_ieee_double, @@ -3082,7 +3082,15 @@ encode_ieee_extended (const struct real_format *fmt, long *buf, if (fmt->has_nans) { image_hi |= 32767; - if (HOST_BITS_PER_LONG == 32) + if (r->canonical) + { + if (fmt->canonical_nan_lsbs_set) + { + sig_hi = (1 << 30) - 1; + sig_lo = 0xffffffff; + } + } + else if (HOST_BITS_PER_LONG == 32) { sig_hi = r->sig[SIGSZ-1]; sig_lo = r->sig[SIGSZ-2]; @@ -3364,7 +3372,7 @@ const struct real_format ieee_extended_motorola_format = true, true, true, - false + true }; const struct real_format ieee_extended_intel_96_format = diff --git a/gcc/real.h b/gcc/real.h index f050dafd48c..ec5a207cb9c 100644 --- a/gcc/real.h +++ b/gcc/real.h @@ -1,6 +1,6 @@ /* Definitions of floating-point access for GNU compiler. Copyright (C) 1989, 1991, 1994, 1996, 1997, 1998, 1999, - 2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + 2000, 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. This file is part of GCC. @@ -254,10 +254,10 @@ extern unsigned int real_hash (const REAL_VALUE_TYPE *); /* Target formats defined in real.c. */ extern const struct real_format ieee_single_format; extern const struct real_format mips_single_format; -extern const struct real_format coldfire_single_format; +extern const struct real_format motorola_single_format; extern const struct real_format ieee_double_format; extern const struct real_format mips_double_format; -extern const struct real_format coldfire_double_format; +extern const struct real_format motorola_double_format; extern const struct real_format ieee_extended_motorola_format; extern const struct real_format ieee_extended_intel_96_format; extern const struct real_format ieee_extended_intel_96_round_53_format; |