re PR libfortran/57496 (I/O: WRITE(*,*) HUGE(0._10) gives SIGFPE with -ffpe-trap=overflow)
PR libfortran/57496 * io/write_float.def: Use built-in type-generic functions defined by libgfortran.h for isfinite, isnan, and signbit. From-SVN: r227136
This commit is contained in:
parent
9f7ba2088e
commit
5cdf54b765
|
@ -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>
|
2015-08-23 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||||
|
|
||||||
PR libfortran/54572
|
PR libfortran/54572
|
||||||
|
|
|
@ -958,33 +958,6 @@ __qmath_(quadmath_snprintf) (buffer, size, "%+-#.*Qf", \
|
||||||
#endif
|
#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.
|
/* 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
|
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;\
|
volatile GFC_REAL_ ## x tmp, one = 1.0;\
|
||||||
tmp = * (GFC_REAL_ ## x *)source;\
|
tmp = * (GFC_REAL_ ## x *)source;\
|
||||||
if (ISFINITE (y,tmp))\
|
if (isfinite (tmp))\
|
||||||
{\
|
{\
|
||||||
nprinted = DTOA(y,0,tmp);\
|
nprinted = DTOA(y,0,tmp);\
|
||||||
int e = atoi (&buffer[4]);\
|
int e = atoi (&buffer[4]);\
|
||||||
|
@ -1235,10 +1208,10 @@ determine_en_precision (st_parameter_dt *dtp, const fnode *f,
|
||||||
{\
|
{\
|
||||||
GFC_REAL_ ## x tmp;\
|
GFC_REAL_ ## x tmp;\
|
||||||
tmp = * (GFC_REAL_ ## x *)source;\
|
tmp = * (GFC_REAL_ ## x *)source;\
|
||||||
sign_bit = SIGNBIT (y,tmp);\
|
sign_bit = signbit (tmp);\
|
||||||
if (!ISFINITE (y,tmp))\
|
if (!isfinite (tmp))\
|
||||||
{ \
|
{ \
|
||||||
write_infnan (dtp, f, ISNAN (y,tmp), sign_bit);\
|
write_infnan (dtp, f, isnan (tmp), sign_bit);\
|
||||||
return;\
|
return;\
|
||||||
}\
|
}\
|
||||||
tmp = sign_bit ? -tmp : tmp;\
|
tmp = sign_bit ? -tmp : tmp;\
|
||||||
|
|
Loading…
Reference in New Issue