re PR libgcc/78804 ([RX] -m64bit-doubles does not work)
authorOleg Endo <olegendo@gcc.gnu.org>
Sun, 3 Nov 2019 12:09:26 +0000 (12:09 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Sun, 3 Nov 2019 12:09:26 +0000 (12:09 +0000)
libgcc/
PR libgcc/78804
* fp-bit.h: Remove FLOAT_BIT_ORDER_MISMATCH.
* fp-bit.c (pack_d, unpack_d): Remove special cases for
FLOAT_BIT_ORDER_MISMATCH.
* config/arc/t-arc: Remove FLOAT_BIT_ORDER_MISMATCH.

From-SVN: r277752

libgcc/ChangeLog
libgcc/config/arc/t-arc
libgcc/fp-bit.c
libgcc/fp-bit.h

index 4a855cbeefd1373c9000f81a8707879c498ee06a..806d048f5d183da79d21ee980e8efc72bba5326a 100644 (file)
@@ -1,3 +1,11 @@
+2019-11-03  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       PR libgcc/78804
+       * fp-bit.h: Remove FLOAT_BIT_ORDER_MISMATCH.
+       * fp-bit.c (pack_d, unpack_d): Remove special cases for
+       FLOAT_BIT_ORDER_MISMATCH.
+       * config/arc/t-arc: Remove FLOAT_BIT_ORDER_MISMATCH.
+
 2019-11-01  Jim Wilson  <jimw@sifive.com>
 
        * config/riscv/t-softfp32 (softfp_extra): Add FP divide routines
index 7b0956cf68d3b054662a7d68b48ff6c9478847c8..9e1b1307a588ceccb663096071b6a6a7dbce0fa9 100644 (file)
@@ -46,7 +46,6 @@ LIB2ADD = fp-bit.c dp-bit.c
 
 dp-bit.c: $(srcdir)/fp-bit.c
        echo '#ifndef __big_endian__' > dp-bit.c
-       echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c
        echo '#endif' >> dp-bit.c
        echo '#include "fp-bit.h"' >> dp-bit.c
        echo '#include "config/arc/dp-hack.h"' >> dp-bit.c
@@ -55,7 +54,6 @@ dp-bit.c: $(srcdir)/fp-bit.c
 fp-bit.c: $(srcdir)/fp-bit.c
        echo '#define FLOAT' > fp-bit.c
        echo '#ifndef __big_endian__' >> fp-bit.c
-       echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c
        echo '#endif' >> fp-bit.c
        echo '#include "config/arc/fp-hack.h"' >> fp-bit.c
        cat $(srcdir)/fp-bit.c >> fp-bit.c
index a9cc3c0bff3d94f62a22532bb0a4ff641e349d47..658f42c8e7cb80a8d3f60149791a870611bc3df5 100644 (file)
@@ -316,12 +316,7 @@ pack_d (const fp_number_type *src)
   /* We previously used bitfields to store the number, but this doesn't
      handle little/big endian systems conveniently, so use shifts and
      masks */
-#ifdef FLOAT_BIT_ORDER_MISMATCH
-  dst.bits.fraction = fraction;
-  dst.bits.exp = exp;
-  dst.bits.sign = sign;
-#else
-# if defined TFLOAT && defined HALFFRACBITS
+#if defined TFLOAT && defined HALFFRACBITS
  {
    halffractype high, low, unity;
    int lowsign, lowexp;
@@ -394,11 +389,10 @@ pack_d (const fp_number_type *src)
      }
    dst.value_raw = ((fractype) high << HALFSHIFT) | low;
  }
-# else
+#else
   dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1);
   dst.value_raw |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << FRACBITS;
   dst.value_raw |= ((fractype) (sign & 1)) << (FRACBITS | EXPBITS);
-# endif
 #endif
 
 #if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
@@ -450,12 +444,7 @@ unpack_d (FLO_union_type * src, fp_number_type * dst)
   src = &swapped;
 #endif
   
-#ifdef FLOAT_BIT_ORDER_MISMATCH
-  fraction = src->bits.fraction;
-  exp = src->bits.exp;
-  sign = src->bits.sign;
-#else
-# if defined TFLOAT && defined HALFFRACBITS
+#if defined TFLOAT && defined HALFFRACBITS
  {
    halffractype high, low;
    
@@ -498,11 +487,10 @@ unpack_d (FLO_union_type * src, fp_number_type * dst)
         }
      }
  }
-# else
+#else
   fraction = src->value_raw & ((((fractype)1) << FRACBITS) - 1);
   exp = ((int)(src->value_raw >> FRACBITS)) & ((1 << EXPBITS) - 1);
   sign = ((int)(src->value_raw >> (FRACBITS + EXPBITS))) & 1;
-# endif
 #endif
 
   dst->sign = sign;
index 5c2b3dfa9718d8b5976c4d6c36f3e8a86f1c17ae..de679bdbf3783105b368af3eb261e910ef5d89d8 100644 (file)
@@ -128,10 +128,6 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
 #define NO_DI_MODE
 #endif
 
-#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-#define FLOAT_BIT_ORDER_MISMATCH
-#endif
-
 #if __BYTE_ORDER__ != __FLOAT_WORD_ORDER__
 #define FLOAT_WORD_ORDER_MISMATCH
 #endif
@@ -354,16 +350,6 @@ typedef union
 # endif
 #endif
 
-#ifdef FLOAT_BIT_ORDER_MISMATCH
-  struct
-    {
-      fractype fraction:FRACBITS __attribute__ ((packed));
-      unsigned int exp:EXPBITS __attribute__ ((packed));
-      unsigned int sign:1 __attribute__ ((packed));
-    }
-  bits;
-#endif
-
 #ifdef _DEBUG_BITFLOAT
   struct
     {