diff options
author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-08-22 00:36:44 +0000 |
---|---|---|
committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-08-22 00:36:44 +0000 |
commit | e919f530e4ddb8fb6ac908e9d56bfd239a005396 (patch) | |
tree | 10a314d9ea9934ac7fdde1c9392d0e4fb5da17b3 /gcc | |
parent | e3fabdf1e782d21204f4382c072f36b48f69e869 (diff) | |
download | gcc-e919f530e4ddb8fb6ac908e9d56bfd239a005396.tar.gz |
Fix x86-x-ia64 cross compiler build failure.
* real.c (ereal_from_int, ereal_from_uint, significand_size): Handle
INTEL_EXTENDED_IEEE_FORMAT.
(toe64): Delete INTEL_EXTENDED_IEEE_FORMAT support. Unconditionally
clear last two bytes of output FP value.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35861 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/real.c | 36 |
2 files changed, 27 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b3dce41d82e..384fb53063d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2000-08-21 Jim Wilson <wilson@cygnus.com> + + * real.c (ereal_from_int, ereal_from_uint, significand_size): Handle + INTEL_EXTENDED_IEEE_FORMAT. + (toe64): Delete INTEL_EXTENDED_IEEE_FORMAT support. Unconditionally + clear last two bytes of output FP value. + 2000-08-21 Graham Stott <grahams@cygnus.co.uk> * config/ia64/ia64.h (REDO_SECTION_INFO_P): Change decl to DECL. diff --git a/gcc/real.c b/gcc/real.c index 030f89a39a4..eb8736c72cd 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -882,8 +882,13 @@ ereal_from_int (d, i, j, mode) break; case 128: +#ifndef INTEL_EXTENDED_IEEE_FORMAT etoe113 (dg, df); e113toe (df, dg); +#else + etoe64 (dg, df); + e64toe (df, dg); +#endif break; default: @@ -936,8 +941,13 @@ ereal_from_uint (d, i, j, mode) break; case 128: +#ifndef INTEL_EXTENDED_IEEE_FORMAT etoe113 (dg, df); e113toe (df, dg); +#else + etoe64 (dg, df); + e64toe (df, dg); +#endif break; default: @@ -3666,22 +3676,11 @@ toe64 (a, b) else { q = b + 4; /* point to output exponent */ - /* The purpose of this conditional is to avoid scribbling beyond - the end of a long double, in case the type is only 80 bits wide. */ - if (LONG_DOUBLE_TYPE_SIZE == 96) - { - /* Clear the last two bytes of 12-byte Intel format */ - *(q+1) = 0; - } -#ifdef INTEL_EXTENDED_IEEE_FORMAT - if (LONG_DOUBLE_TYPE_SIZE == 128) - { - /* Clear the last 6 bytes of 16-byte Intel format. */ - q[1] = 0; - q[2] = 0; - q[3] = 0; - } -#endif + /* Clear the last two bytes of 12-byte Intel format. q is pointing + into an array of size 6 (e.g. x[NE]), so the last two bytes are + always there, and there are never more bytes, even when we are using + INTEL_EXTENDED_IEEE_FORMAT. */ + *(q+1) = 0; } #endif @@ -6917,8 +6916,13 @@ switch (GET_MODE_BITSIZE (mode)) case 96: return 64; + case 128: +#ifndef INTEL_EXTENDED_IEEE_FORMAT return 113; +#else + return 64; +#endif default: abort (); |