Mercurial > hg > CbC > CbC_gcc
diff gcc/realmpfr.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | b7f97abdc517 |
children | 84e7813d76e9 |
line wrap: on
line diff
--- a/gcc/realmpfr.c Sun Aug 21 07:07:55 2011 +0900 +++ b/gcc/realmpfr.c Fri Oct 27 22:46:09 2017 +0900 @@ -1,5 +1,5 @@ /* Conversion routines from GCC internal float representation to MPFR. - Copyright (C) 2010 + Copyright (C) 2010-2017 Free Software Foundation, Inc. This file is part of GCC. @@ -20,8 +20,9 @@ #include "config.h" #include "system.h" #include "coretypes.h" +#include "tree.h" #include "realmpfr.h" -#include "tree.h" /* For TYPE_MODE in real_from_mpfr. */ +#include "stor-layout.h" /* Convert from REAL_VALUE_TYPE to MPFR. The caller is responsible for initializing and clearing the MPFR parameter. */ @@ -53,11 +54,12 @@ gcc_assert (ret == 0); } -/* Convert from MPFR to REAL_VALUE_TYPE, for a given type TYPE and rounding - mode RNDMODE. TYPE is only relevant if M is a NaN. */ +/* Convert from MPFR to REAL_VALUE_TYPE, for a given format FORMAT and + rounding mode RNDMODE. FORMAT is only relevant if M is a NaN. */ void -real_from_mpfr (REAL_VALUE_TYPE *r, mpfr_srcptr m, tree type, mp_rnd_t rndmode) +real_from_mpfr (REAL_VALUE_TYPE *r, mpfr_srcptr m, const real_format *format, + mp_rnd_t rndmode) { /* We use a string as an intermediate type. */ char buf[128], *rstr; @@ -74,7 +76,7 @@ if (mpfr_nan_p (m)) { - real_nan (r, "", 1, TYPE_MODE (type)); + real_nan (r, "", 1, format); return; } @@ -99,3 +101,13 @@ real_from_string (r, buf); } +/* Convert from MPFR to REAL_VALUE_TYPE, for a given type TYPE and rounding + mode RNDMODE. TYPE is only relevant if M is a NaN. */ + +void +real_from_mpfr (REAL_VALUE_TYPE *r, mpfr_srcptr m, tree type, mp_rnd_t rndmode) +{ + real_from_mpfr (r, m, type ? REAL_MODE_FORMAT (TYPE_MODE (type)) : NULL, + rndmode); +} +