aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2002-03-23 11:57:29 +0000
committerAlan Modra <amodra@gcc.gnu.org>2002-03-23 22:27:29 +1030
commitbbaa9790f3bd9d145e620646ef60bd96d6479371 (patch)
tree50c5de03fbc7ab65b2dc378b52128fa7451c08a6
parentad42149cb159bd56008d8ea54974876a963e4be3 (diff)
downloadgcc-bbaa9790f3bd9d145e620646ef60bd96d6479371.zip
gcc-bbaa9790f3bd9d145e620646ef60bd96d6479371.tar.gz
gcc-bbaa9790f3bd9d145e620646ef60bd96d6479371.tar.bz2
* real.h (N): Special case 128 bit doubles.
From-SVN: r51229
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/real.h5
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b95a707..21bc263 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,7 @@
2002-03-23 Alan Modra <amodra@bigpond.net.au>
+ * real.h (N): Special case 128 bit doubles.
+
* combine.c (simplify_comparison): When widening modes, ignore
sign extension on CONST_INTs.
diff --git a/gcc/real.h b/gcc/real.h
index d3cf780..5683bbc 100644
--- a/gcc/real.h
+++ b/gcc/real.h
@@ -77,7 +77,12 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* REAL_VALUE_TYPE is an array of the minimum number of HOST_WIDE_INTs
required to hold MAX_LONG_DOUBLE_TYPE_SIZE bits. */
+#if MAX_LONG_DOUBLE_TYPE_SIZE == 128
+/* For 128 bit reals, we calculate internally with extra precision. */
+#define N (160 / BITS_PER_UNIT)
+#else
#define N (MAX_LONG_DOUBLE_TYPE_SIZE / BITS_PER_UNIT)
+#endif
#define S sizeof (HOST_WIDE_INT)
typedef struct {
HOST_WIDE_INT r[N/S + (N%S ? 1 : 0)]; /* round up */