merge from gcc

This commit is contained in:
DJ Delorie 2008-06-11 01:17:34 +00:00
parent 06c74433a7
commit 5f5dfcbe1b
14 changed files with 93 additions and 13 deletions

View File

@ -1,3 +1,16 @@
2008-06-10 Joseph Myers <joseph@codesourcery.com>
* dconfig.h: New.
* decContext.c, decExcept.c, decExcept.h, decLibrary.c,
decNumber.c, decNumberLocal.h, decRound.c, dpd/decimal128.c,
dpd/decimal32.c, dpd/decimal64.c: Include dconfig.h not config.h.
* dpd/decimal128Local.h (decimal128SetSign, decimal128ClearSign,
decimal128FlipSign): Use WORDS_BIGENDIAN not
FLOAT_WORDS_BIG_ENDIAN.
* bid/host-ieee128.c: Include dconfig.h.
(__host_to_ieee_128, __ieee_to_host_128): Swap 64-bit halves of
value if WORDS_BIGENDIAN.
2008-04-18 Paolo Bonzini <bonzini@gnu.org> 2008-04-18 Paolo Bonzini <bonzini@gnu.org>
PR bootstrap/35457 PR bootstrap/35457

View File

@ -29,20 +29,35 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
#include <string.h> #include <string.h>
#include "dconfig.h"
#include "bid-dpd.h" #include "bid-dpd.h"
#include "decimal128.h" #include "decimal128.h"
void __host_to_ieee_128 (_Decimal128 in, decimal128 *out); void __host_to_ieee_128 (_Decimal128 in, decimal128 *out);
void __ieee_to_host_128 (decimal128 in, _Decimal128 *out); void __ieee_to_host_128 (decimal128 in, _Decimal128 *out);
/* The code for converting 128-bit values between DPD and BID presumes
that the 64-bit halves of the 128-bit value are in little-endian
order, so they need swapping on big-endian hosts. */
void void
__host_to_ieee_128 (_Decimal128 in, decimal128 *out) __host_to_ieee_128 (_Decimal128 in, decimal128 *out)
{ {
#if WORDS_BIGENDIAN
memcpy ((char *) out, (char *) &in + 8, 8);
memcpy ((char *) out + 8, (char *) &in, 8);
#else
memcpy ((char *) out, (char *) &in, 16); memcpy ((char *) out, (char *) &in, 16);
#endif
} }
void void
__ieee_to_host_128 (decimal128 in, _Decimal128 *out) __ieee_to_host_128 (decimal128 in, _Decimal128 *out)
{ {
#if WORDS_BIGENDIAN
memcpy ((char *) out, (char *) &in + 8, 8);
memcpy ((char *) out + 8, (char *) &in, 8);
#else
memcpy ((char *) out, (char *) &in, 16); memcpy ((char *) out, (char *) &in, 16);
#endif
} }

52
libdecnumber/dconfig.h Normal file
View File

@ -0,0 +1,52 @@
/* Configure decNumber for either host or target.
Copyright (C) 2008 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version.
In addition to the permissions in the GNU General Public License,
the Free Software Foundation gives you unlimited permission to link
the compiled version of this file into combinations with other
programs, and to distribute those combinations without any
restriction coming from the use of this file. (The General Public
License restrictions do apply in other respects; for example, they
cover modification of the file, and distribution when not linked
into a combine executable.)
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA. */
#ifdef IN_LIBGCC2
#include "tconfig.h"
#include "coretypes.h"
#include "tm.h"
#ifndef LIBGCC2_WORDS_BIG_ENDIAN
#define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
#endif
#ifndef LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
#define LIBGCC2_FLOAT_WORDS_BIG_ENDIAN LIBGCC2_WORDS_BIG_ENDIAN
#endif
#if LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
#define WORDS_BIGENDIAN 1
#endif
#else
#include "config.h"
#endif

View File

@ -37,7 +37,7 @@
#include <string.h> /* for strcmp */ #include <string.h> /* for strcmp */
#include <stdio.h> /* for printf if DECCHECK */ #include <stdio.h> /* for printf if DECCHECK */
#include "config.h" /* for GCC definitions */ #include "dconfig.h" /* for GCC definitions */
#include "decContext.h" /* context and base types */ #include "decContext.h" /* context and base types */
#include "decNumberLocal.h" /* decNumber local types, etc. */ #include "decNumberLocal.h" /* decNumber local types, etc. */

View File

@ -28,7 +28,7 @@
02110-1301, USA. */ 02110-1301, USA. */
#include <fenv.h> #include <fenv.h>
#include "config.h" #include "dconfig.h"
#include "decContext.h" #include "decContext.h"
#include "decExcept.h" #include "decExcept.h"

View File

@ -28,7 +28,7 @@
02110-1301, USA. */ 02110-1301, USA. */
#include <fenv.h> #include <fenv.h>
#include "config.h" #include "dconfig.h"
#include "decContext.h" #include "decContext.h"
#define DFP_EXCEPTIONS_ENABLED 1 #define DFP_EXCEPTIONS_ENABLED 1

View File

@ -27,7 +27,7 @@
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA. */ 02110-1301, USA. */
#include "config.h" #include "dconfig.h"
#include "decContext.h" #include "decContext.h"
#include "decimal128.h" #include "decimal128.h"
#include "decimal64.h" #include "decimal64.h"

View File

@ -170,7 +170,7 @@
#include <stdio.h> /* for printf [if needed] */ #include <stdio.h> /* for printf [if needed] */
#include <string.h> /* for strcpy */ #include <string.h> /* for strcpy */
#include <ctype.h> /* for lower */ #include <ctype.h> /* for lower */
#include "config.h" /* for GCC definitions */ #include "dconfig.h" /* for GCC definitions */
#include "decNumber.h" /* base number library */ #include "decNumber.h" /* base number library */
#include "decNumberLocal.h" /* decNumber local types, etc. */ #include "decNumberLocal.h" /* decNumber local types, etc. */

View File

@ -44,7 +44,7 @@
#include <stdlib.h> /* for abs */ #include <stdlib.h> /* for abs */
#include <string.h> /* for memset, strcpy */ #include <string.h> /* for memset, strcpy */
#include "config.h" /* for WORDS_BIGENDIAN */ #include "dconfig.h" /* for WORDS_BIGENDIAN */
/* Conditional code flag -- set this to match hardware platform */ /* Conditional code flag -- set this to match hardware platform */
/* 1=little-endian, 0=big-endian */ /* 1=little-endian, 0=big-endian */

View File

@ -28,7 +28,7 @@
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA. */ 02110-1301, USA. */
#include "config.h" #include "dconfig.h"
#include "decContext.h" #include "decContext.h"
#include "decRound.h" #include "decRound.h"

View File

@ -42,7 +42,7 @@
#include <string.h> /* [for memset/memcpy] */ #include <string.h> /* [for memset/memcpy] */
#include <stdio.h> /* [for printf] */ #include <stdio.h> /* [for printf] */
#include "config.h" /* GCC definitions */ #include "dconfig.h" /* GCC definitions */
#define DECNUMDIGITS 34 /* make decNumbers with space for 34 */ #define DECNUMDIGITS 34 /* make decNumbers with space for 34 */
#include "decNumber.h" /* base number library */ #include "decNumber.h" /* base number library */
#include "decNumberLocal.h" /* decNumber local types, etc. */ #include "decNumberLocal.h" /* decNumber local types, etc. */

View File

@ -34,14 +34,14 @@
/* Set sign; this assumes the sign was previously zero. */ /* Set sign; this assumes the sign was previously zero. */
#define decimal128SetSign(d,b) \ #define decimal128SetSign(d,b) \
{ (d)->bytes[FLOAT_WORDS_BIG_ENDIAN ? 0 : 15] |= ((unsigned) (b) << 7); } { (d)->bytes[WORDS_BIGENDIAN ? 0 : 15] |= ((unsigned) (b) << 7); }
/* Clear sign. */ /* Clear sign. */
#define decimal128ClearSign(d) \ #define decimal128ClearSign(d) \
{ (d)->bytes[FLOAT_WORDS_BIG_ENDIAN ? 0 : 15] &= ~0x80; } { (d)->bytes[WORDS_BIGENDIAN ? 0 : 15] &= ~0x80; }
/* Flip sign. */ /* Flip sign. */
#define decimal128FlipSign(d) \ #define decimal128FlipSign(d) \
{ (d)->bytes[FLOAT_WORDS_BIG_ENDIAN ? 0 : 15] ^= 0x80; } { (d)->bytes[WORDS_BIGENDIAN ? 0 : 15] ^= 0x80; }
#endif #endif

View File

@ -42,7 +42,7 @@
#include <string.h> /* [for memset/memcpy] */ #include <string.h> /* [for memset/memcpy] */
#include <stdio.h> /* [for printf] */ #include <stdio.h> /* [for printf] */
#include "config.h" /* GCC definitions */ #include "dconfig.h" /* GCC definitions */
#define DECNUMDIGITS 7 /* make decNumbers with space for 7 */ #define DECNUMDIGITS 7 /* make decNumbers with space for 7 */
#include "decNumber.h" /* base number library */ #include "decNumber.h" /* base number library */
#include "decNumberLocal.h" /* decNumber local types, etc. */ #include "decNumberLocal.h" /* decNumber local types, etc. */

View File

@ -42,7 +42,7 @@
#include <string.h> /* [for memset/memcpy] */ #include <string.h> /* [for memset/memcpy] */
#include <stdio.h> /* [for printf] */ #include <stdio.h> /* [for printf] */
#include "config.h" /* GCC definitions */ #include "dconfig.h" /* GCC definitions */
#define DECNUMDIGITS 16 /* make decNumbers with space for 16 */ #define DECNUMDIGITS 16 /* make decNumbers with space for 16 */
#include "decNumber.h" /* base number library */ #include "decNumber.h" /* base number library */
#include "decNumberLocal.h" /* decNumber local types, etc. */ #include "decNumberLocal.h" /* decNumber local types, etc. */