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);
+}
+