aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/real.c24
-rw-r--r--gcc/real.h4
3 files changed, 28 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b11afd8..19958f4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2001-12-28 Richard Henderson <rth@redhat.com>
+
+ * real.c (etoe113, toe113): Ifndef INTEL_EXTENDED_IEEE_FORMAT.
+ (endian): Clear word 3 for INTEL_EXTENDED_IEEE_FORMAT.
+ (etartdouble): Invoke etoe64 for INTEL_EXTENDED_IEEE_FORMAT.
+ * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Don't special case
+ INTEL_EXTENDED_IEEE_FORMAT.
+
2001-12-27 Geoff Keating <geoffk@redhat.com>
* combine.c (try_combine): Mask off sign bits when combining
diff --git a/gcc/real.c b/gcc/real.c
index dd62aec..de737f6 100644
--- a/gcc/real.c
+++ b/gcc/real.c
@@ -425,8 +425,10 @@ static void e64toe PARAMS ((UEMUSHORT *, UEMUSHORT *));
static void e113toe PARAMS ((UEMUSHORT *, UEMUSHORT *));
#endif
static void e24toe PARAMS ((UEMUSHORT *, UEMUSHORT *));
+#if (INTEL_EXTENDED_IEEE_FORMAT == 0)
static void etoe113 PARAMS ((UEMUSHORT *, UEMUSHORT *));
static void toe113 PARAMS ((UEMUSHORT *, UEMUSHORT *));
+#endif
static void etoe64 PARAMS ((UEMUSHORT *, UEMUSHORT *));
static void toe64 PARAMS ((UEMUSHORT *, UEMUSHORT *));
static void etoe53 PARAMS ((UEMUSHORT *, UEMUSHORT *));
@@ -524,7 +526,10 @@ endian (e, x, mode)
t = (unsigned long) e[7] & 0xffff;
t |= th << 16;
x[3] = (long) t;
+#else
+ x[3] = 0;
#endif
+ /* FALLTHRU */
case XFmode:
/* Swap halfwords in the third long. */
@@ -532,7 +537,7 @@ endian (e, x, mode)
t = (unsigned long) e[5] & 0xffff;
t |= th << 16;
x[2] = (long) t;
- /* fall into the double case */
+ /* FALLTHRU */
case DFmode:
/* Swap halfwords in the second word. */
@@ -540,7 +545,7 @@ endian (e, x, mode)
t = (unsigned long) e[3] & 0xffff;
t |= th << 16;
x[1] = (long) t;
- /* fall into the float case */
+ /* FALLTHRU */
case SFmode:
case HFmode:
@@ -568,7 +573,10 @@ endian (e, x, mode)
t = (unsigned long) e[6] & 0xffff;
t |= th << 16;
x[3] = (long) t;
+#else
+ x[3] = 0;
#endif
+ /* FALLTHRU */
case XFmode:
/* Pack the third long.
@@ -578,7 +586,7 @@ endian (e, x, mode)
t = (unsigned long) e[4] & 0xffff;
t |= th << 16;
x[2] = (long) t;
- /* fall into the double case */
+ /* FALLTHRU */
case DFmode:
/* Pack the second long */
@@ -586,7 +594,7 @@ endian (e, x, mode)
t = (unsigned long) e[2] & 0xffff;
t |= th << 16;
x[1] = (long) t;
- /* fall into the float case */
+ /* FALLTHRU */
case SFmode:
case HFmode:
@@ -1256,7 +1264,11 @@ etartdouble (r, l)
UEMUSHORT e[NE];
GET_REAL (&r, e);
+#if INTEL_EXTENDED_IEEE_FORMAT == 0
etoe113 (e, e);
+#else
+ etoe64 (e, e);
+#endif
endian (e, l, TFmode);
}
@@ -3535,6 +3547,7 @@ e24toe (pe, y)
#endif /* not IBM */
}
+#if (INTEL_EXTENDED_IEEE_FORMAT == 0)
/* Convert e-type X to IEEE 128-bit long double format E. */
static void
@@ -3627,6 +3640,7 @@ toe113 (a, b)
*q-- = *p++;
}
}
+#endif
/* Convert e-type X to IEEE double extended format E. */
@@ -5515,9 +5529,11 @@ read_expnt:
case 64:
toe64 (yy, y);
break;
+#if (INTEL_EXTENDED_IEEE_FORMAT == 0)
case 113:
toe113 (yy, y);
break;
+#endif
case NBITS:
emovo (yy, y);
break;
diff --git a/gcc/real.h b/gcc/real.h
index 1e4dab1..b9ee363 100644
--- a/gcc/real.h
+++ b/gcc/real.h
@@ -208,15 +208,11 @@ extern REAL_VALUE_TYPE ereal_from_double PARAMS ((HOST_WIDE_INT *));
ereal_from_uint (&d, lo, hi, mode)
/* IN is a REAL_VALUE_TYPE. OUT is an array of longs. */
-#if (INTEL_EXTENDED_IEEE_FORMAT != 0) && (MAX_LONG_DOUBLE_TYPE_SIZE == 128)
-#define REAL_VALUE_TO_TARGET_LONG_DOUBLE(IN, OUT) (etarldouble ((IN), (OUT)))
-#else
#define REAL_VALUE_TO_TARGET_LONG_DOUBLE(IN, OUT) \
(LONG_DOUBLE_TYPE_SIZE == 64 ? etardouble ((IN), (OUT)) \
: LONG_DOUBLE_TYPE_SIZE == 96 ? etarldouble ((IN), (OUT)) \
: LONG_DOUBLE_TYPE_SIZE == 128 ? etartdouble ((IN), (OUT)) \
: abort())
-#endif
#define REAL_VALUE_TO_TARGET_DOUBLE(IN, OUT) (etardouble ((IN), (OUT)))
/* IN is a REAL_VALUE_TYPE. OUT is a long. */