diff options
author | Zack Weinberg <zack@codesourcery.com> | 2004-07-27 21:41:23 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2004-07-27 21:41:23 +0000 |
commit | 968a7562a63bfddeb3a2ff7bf89656dcb3b2e54b (patch) | |
tree | 433666cc87179f827d77692faceeb4590690a580 /gcc/config/ia64 | |
parent | 706aa09b357196d83285da3809289b7d7d4f49a2 (diff) | |
download | gcc-968a7562a63bfddeb3a2ff7bf89656dcb3b2e54b.zip gcc-968a7562a63bfddeb3a2ff7bf89656dcb3b2e54b.tar.gz gcc-968a7562a63bfddeb3a2ff7bf89656dcb3b2e54b.tar.bz2 |
libgcc2.c: Change all conditionals testing LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96 to == 80.
* libgcc2.c: Change all conditionals testing
LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96 to == 80.
* libgcc2.h: Likewise.
* config/i386/i386.c (ix86_init_mmx_sse_builtins): Set
TYPE_PRECISION of float80_type to 80.
* config/ia64/ia64.c (ia64_init_builtins): Set TYPE_PRECISION
of fpreg_type and float80_type to 80.
* config/i386/i386.h, config/ia64/ia64.h, config/m68k/m68k.h
* config/m68k/netbsd-elf.h:
Change LONG_DOUBLE_TYPE_SIZE and possibly LIBGCC2_LONG_DOUBLE_TYPE_SIZE
to evaluate to 80 whenever they would formerly have evaluated to 96.
* config/i386/sco5.h: Remove unnecessary redefinition of
LONG_DOUBLE_TYPE_SIZE.
* doc/rtl.texi: Clarify uses of XFmode and TFmode.
* config/i386/i386-modes.def: Use FRACTIONAL_FLOAT_MODE for
XFmode, with a bitsize of 80. Update commentary.
* config/ia64/ia64-modes.def: Likewise.
* config/m68k/m68k-modes.def: Likewise.
From-SVN: r85232
Diffstat (limited to 'gcc/config/ia64')
-rw-r--r-- | gcc/config/ia64/ia64-modes.def | 18 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 4 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.h | 4 |
3 files changed, 13 insertions, 13 deletions
diff --git a/gcc/config/ia64/ia64-modes.def b/gcc/config/ia64/ia64-modes.def index 17688bd..1cb59ad 100644 --- a/gcc/config/ia64/ia64-modes.def +++ b/gcc/config/ia64/ia64-modes.def @@ -22,35 +22,35 @@ Boston, MA 02111-1307, USA. */ /* IA64 requires both XF and TF modes. XFmode is __float80 is IEEE extended; TFmode is __float128 - is IEEE quad. + is IEEE quad. Both these modes occupy 16 bytes, but XFmode + only has 80 significant bits. */ - IEEE extended is 128 bits wide, except in ILP32 mode, but we - have to say it's 12 bytes so that the bitsize and wider_mode - tables are correctly set up. We correct its size below. */ - -FLOAT_MODE (XF, 12, ieee_extended_intel_128_format); +FRACTIONAL_FLOAT_MODE (XF, 80, 16, ieee_extended_intel_128_format); FLOAT_MODE (TF, 16, ieee_quad_format); /* The above produces: mode ILP32 size/align LP64 size/align - XF 12/4 12/4 + XF 16/16 16/16 TF 16/16 16/16 psABI expectations: mode ILP32 size/align LP64 size/align - XF - 16/16 + XF 12/4 - TF - - HPUX expectations: mode ILP32 size/align LP64 size/align - XF 16/16 16/16 + XF - - TF 16/8 - We fix this up here. */ +ADJUST_FLOAT_FORMAT (XF, (TARGET_ILP32 && !TARGET_HPUX) + ? &ieee_extended_intel_96_format + : &ieee_extended_intel_128_format); ADJUST_BYTESIZE (XF, (TARGET_ILP32 && !TARGET_HPUX) ? 12 : 16); ADJUST_ALIGNMENT (XF, (TARGET_ILP32 && !TARGET_HPUX) ? 4 : 16); diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index d88b8e7d..2899c0f 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -8138,13 +8138,13 @@ ia64_init_builtins (void) fpreg_type = make_node (REAL_TYPE); /* ??? The back end should know to load/save __fpreg variables using the ldf.fill and stf.spill instructions. */ - TYPE_PRECISION (fpreg_type) = 96; + TYPE_PRECISION (fpreg_type) = 80; layout_type (fpreg_type); (*lang_hooks.types.register_builtin_type) (fpreg_type, "__fpreg"); /* The __float80 type. */ float80_type = make_node (REAL_TYPE); - TYPE_PRECISION (float80_type) = 96; + TYPE_PRECISION (float80_type) = 80; layout_type (float80_type); (*lang_hooks.types.register_builtin_type) (float80_type, "__float80"); diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index 00d35ea..8bc4e3b 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -448,10 +448,10 @@ while (0) #define DOUBLE_TYPE_SIZE 64 /* long double is XFmode normally, TFmode for HPUX. */ -#define LONG_DOUBLE_TYPE_SIZE (TARGET_HPUX ? 128 : 96) +#define LONG_DOUBLE_TYPE_SIZE (TARGET_HPUX ? 128 : 80) /* We always want the XFmode operations from libgcc2.c. */ -#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 96 +#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 80 #define DEFAULT_SIGNED_CHAR 1 |