Index: gcc/mpfr/get_sj.c |
diff --git a/gcc/mpfr/get_sj.c b/gcc/mpfr/get_sj.c |
deleted file mode 100644 |
index c746fc786fb5d36f3df9e68c451d9c1550feab74..0000000000000000000000000000000000000000 |
--- a/gcc/mpfr/get_sj.c |
+++ /dev/null |
@@ -1,129 +0,0 @@ |
-/* mpfr_get_sj -- convert a MPFR number to a huge machine signed integer |
- |
-Copyright 2004, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. |
-Contributed by the Arenaire and Cacao projects, INRIA. |
- |
-This file is part of the GNU MPFR Library. |
- |
-The GNU MPFR Library is free software; you can redistribute it and/or modify |
-it under the terms of the GNU Lesser General Public License as published by |
-the Free Software Foundation; either version 2.1 of the License, or (at your |
-option) any later version. |
- |
-The GNU MPFR Library 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 Lesser General Public |
-License for more details. |
- |
-You should have received a copy of the GNU Lesser General Public License |
-along with the GNU MPFR Library; see the file COPYING.LIB. If not, write to |
-the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, |
-MA 02110-1301, USA. */ |
- |
-#ifdef HAVE_CONFIG_H |
-# include "config.h" /* for a build within gmp */ |
-#endif |
- |
-/* The ISO C99 standard specifies that in C++ implementations the |
- INTMAX_MAX, ... macros should only be defined if explicitly requested. */ |
-#if defined __cplusplus |
-# define __STDC_LIMIT_MACROS |
-# define __STDC_CONSTANT_MACROS |
-#endif |
- |
-#if HAVE_INTTYPES_H |
-# include <inttypes.h> /* for intmax_t */ |
-#else |
-# if HAVE_STDINT_H |
-# include <stdint.h> |
-# endif |
-#endif |
- |
-#include "mpfr-impl.h" |
- |
-#ifdef _MPFR_H_HAVE_INTMAX_T |
- |
-intmax_t |
-mpfr_get_sj (mpfr_srcptr f, mpfr_rnd_t rnd) |
-{ |
- intmax_t r; |
- mp_prec_t prec; |
- mpfr_t x; |
- |
- if (!mpfr_fits_intmax_p (f, rnd)) |
- { |
- MPFR_SET_ERANGE (); |
- return MPFR_IS_NEG (f) ? INTMAX_MIN : INTMAX_MAX; |
- } |
- if (MPFR_IS_ZERO (f)) |
- return (intmax_t) 0; |
- |
- /* determine the precision of intmax_t */ |
- for (r = INTMAX_MIN, prec = 0; r != 0; r /= 2, prec++) |
- { |
- } |
- /* Note: though INTMAX_MAX would have been sufficient for the conversion, |
- we chose INTMAX_MIN so that INTMAX_MIN - 1 is always representable in |
- precision prec; this is useful to detect overflows in GMP_RNDZ (will |
- be needed later). */ |
- |
- /* Now, r = 0. */ |
- |
- mpfr_init2 (x, prec); |
- mpfr_rint (x, f, rnd); |
- MPFR_ASSERTN (MPFR_IS_FP (x)); |
- |
- if (MPFR_NOTZERO (x)) |
- { |
- mp_limb_t *xp; |
- int sh, n; /* An int should be sufficient in this context. */ |
- |
- xp = MPFR_MANT (x); |
- sh = MPFR_GET_EXP (x); |
- MPFR_ASSERTN ((mp_prec_t) sh <= prec); |
- if (INTMAX_MIN + INTMAX_MAX != 0 |
- && MPFR_UNLIKELY ((mp_prec_t) sh == prec)) |
- { |
- /* 2's complement and x <= INTMAX_MIN: in the case mp_limb_t |
- has the same size as intmax_t, we cannot use the code in |
- the for loop since the operations would be performed in |
- unsigned arithmetic. */ |
- MPFR_ASSERTN (MPFR_IS_NEG (x) && (mpfr_powerof2_raw (x))); |
- r = INTMAX_MIN; |
- } |
- else if (MPFR_IS_POS (x)) |
- { |
- for (n = MPFR_LIMB_SIZE (x) - 1; n >= 0; n--) |
- { |
- sh -= BITS_PER_MP_LIMB; |
- /* Note the concerning the casts below: |
- When sh >= 0, the cast must be performed before the shift |
- for the case sizeof(intmax_t) > sizeof(mp_limb_t). |
- When sh < 0, the cast must be performed after the shift |
- for the case sizeof(intmax_t) == sizeof(mp_limb_t), as |
- mp_limb_t is unsigned, therefore not representable as an |
- intmax_t when the MSB is 1 (this is the case here). */ |
- r += (sh >= 0 |
- ? (intmax_t) xp[n] << sh |
- : (intmax_t) (xp[n] >> (-sh))); |
- } |
- } |
- else |
- { |
- for (n = MPFR_LIMB_SIZE (x) - 1; n >= 0; n--) |
- { |
- sh -= BITS_PER_MP_LIMB; |
- /* See above for the note concerning the casts. */ |
- r -= (sh >= 0 |
- ? (intmax_t) xp[n] << sh |
- : (intmax_t) (xp[n] >> (-sh))); |
- } |
- } |
- } |
- |
- mpfr_clear (x); |
- |
- return r; |
-} |
- |
-#endif |