OSDN Git Service
(root)
/
pf3gnuchains
/
gcc-fork.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
PR fortran/46625
[pf3gnuchains/gcc-fork.git]
/
libgfortran
/
io
/
write_float.def
diff --git
a/libgfortran/io/write_float.def
b/libgfortran/io/write_float.def
index
776e591
..
d5bb346
100644
(file)
--- a/
libgfortran/io/write_float.def
+++ b/
libgfortran/io/write_float.def
@@
-973,11
+973,16
@@
sprintf (buffer, "%+-#" STR(MIN_FIELD_WIDTH) ".*" \
#endif
#endif
+#if defined(GFC_REAL_16_IS_FLOAT128)
+#define DTOAQ \
+__qmath_(quadmath_flt128tostr) (buffer, size, ndigits - 1, tmp);
+#endif
+
#define WRITE_FLOAT(x,y)\
{\
GFC_REAL_ ## x tmp;\
tmp = * (GFC_REAL_ ## x *)source;\
#define WRITE_FLOAT(x,y)\
{\
GFC_REAL_ ## x tmp;\
tmp = * (GFC_REAL_ ## x *)source;\
- sign_bit =
__builtin_
signbit (tmp);\
+ sign_bit = signbit (tmp);\
if (!isfinite (tmp))\
{ \
write_infnan (dtp, f, isnan (tmp), sign_bit);\
if (!isfinite (tmp))\
{ \
write_infnan (dtp, f, isnan (tmp), sign_bit);\
@@
-1002,7
+1007,7
@@
static void
write_float (st_parameter_dt *dtp, const fnode *f, const char *source, int len)
{
write_float (st_parameter_dt *dtp, const fnode *f, const char *source, int len)
{
-#if defined(HAVE_GFC_REAL_16)
&&
__LDBL_DIG__ > 18
+#if defined(HAVE_GFC_REAL_16)
||
__LDBL_DIG__ > 18
# define MIN_FIELD_WIDTH 46
#else
# define MIN_FIELD_WIDTH 31
# define MIN_FIELD_WIDTH 46
#else
# define MIN_FIELD_WIDTH 31
@@
-1057,7
+1062,11
@@
write_float (st_parameter_dt *dtp, const fnode *f, const char *source, int len)
#endif
#ifdef HAVE_GFC_REAL_16
case 16:
#endif
#ifdef HAVE_GFC_REAL_16
case 16:
+# ifdef GFC_REAL_16_IS_FLOAT128
+ WRITE_FLOAT(16,Q)
+# else
WRITE_FLOAT(16,L)
WRITE_FLOAT(16,L)
+# endif
break;
#endif
default:
break;
#endif
default: