OSDN Git Service

Fix x86-x-ia64 cross compiler build failure.
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Aug 2000 00:36:44 +0000 (00:36 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Aug 2000 00:36:44 +0000 (00:36 +0000)
* 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

gcc/ChangeLog
gcc/real.c

index b3dce41..384fb53 100644 (file)
@@ -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.
index 030f89a..eb8736c 100644 (file)
@@ -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 ();