aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/write_float.def35
2 files changed, 10 insertions, 31 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index b74b71d..9d58d50 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2015-08-24 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR libfortran/57496
+ * io/write_float.def: Use built-in type-generic functions defined
+ by libgfortran.h for isfinite, isnan, and signbit.
+
2015-08-23 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR libfortran/54572
diff --git a/libgfortran/io/write_float.def b/libgfortran/io/write_float.def
index 1bbe016..dd298aa 100644
--- a/libgfortran/io/write_float.def
+++ b/libgfortran/io/write_float.def
@@ -958,33 +958,6 @@ __qmath_(quadmath_snprintf) (buffer, size, "%+-#.*Qf", \
#endif
-#if defined(GFC_REAL_16_IS_FLOAT128)
-#define ISFINITE2Q(val) finiteq(val)
-#endif
-#define ISFINITE2(val) isfinite(val)
-#define ISFINITE2L(val) isfinite(val)
-
-#define ISFINITE(suff,val) TOKENPASTE(ISFINITE2,suff)(val)
-
-
-#if defined(GFC_REAL_16_IS_FLOAT128)
-#define SIGNBIT2Q(val) signbitq(val)
-#endif
-#define SIGNBIT2(val) signbit(val)
-#define SIGNBIT2L(val) signbit(val)
-
-#define SIGNBIT(suff,val) TOKENPASTE(SIGNBIT2,suff)(val)
-
-
-#if defined(GFC_REAL_16_IS_FLOAT128)
-#define ISNAN2Q(val) isnanq(val)
-#endif
-#define ISNAN2(val) isnan(val)
-#define ISNAN2L(val) isnan(val)
-
-#define ISNAN(suff,val) TOKENPASTE(ISNAN2,suff)(val)
-
-
/* Generate corresponding I/O format for FMT_G and output.
The rules to translate FMT_G to FMT_E or FMT_F from DEC fortran
@@ -1164,7 +1137,7 @@ OUTPUT_FLOAT_FMT_G(16,L)
{\
volatile GFC_REAL_ ## x tmp, one = 1.0;\
tmp = * (GFC_REAL_ ## x *)source;\
- if (ISFINITE (y,tmp))\
+ if (isfinite (tmp))\
{\
nprinted = DTOA(y,0,tmp);\
int e = atoi (&buffer[4]);\
@@ -1235,10 +1208,10 @@ determine_en_precision (st_parameter_dt *dtp, const fnode *f,
{\
GFC_REAL_ ## x tmp;\
tmp = * (GFC_REAL_ ## x *)source;\
- sign_bit = SIGNBIT (y,tmp);\
- if (!ISFINITE (y,tmp))\
+ sign_bit = signbit (tmp);\
+ if (!isfinite (tmp))\
{ \
- write_infnan (dtp, f, ISNAN (y,tmp), sign_bit);\
+ write_infnan (dtp, f, isnan (tmp), sign_bit);\
return;\
}\
tmp = sign_bit ? -tmp : tmp;\