* real.h (N): Special case 128 bit doubles.
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Mar 2002 11:57:29 +0000 (11:57 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Mar 2002 11:57:29 +0000 (11:57 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51229 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/real.h

index b95a707..21bc263 100644 (file)
@@ -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.
 
index d3cf780..5683bbc 100644 (file)
@@ -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 */