aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-const.c
diff options
context:
space:
mode:
authorfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>2014-10-19 20:49:27 +0000
committerfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>2014-10-19 20:49:27 +0000
commit1d8a0522834492bb0c862e5298c42280abf83eb0 (patch)
tree39651a3e49d77383e3e4a37e968c07e84d8809ac /gcc/fortran/trans-const.c
parent1479afa463f6eca2f34b518644dcf14e9fbe2241 (diff)
PR fortran/48979
* trans-const.c (gfc_build_nan): New function. * trans-const.h (gfc_build_nan): New prototype. * trans-intrinsic.c (gfc_conv_intrinsic_exponent): Handle special values. (gfc_conv_intrinsic_minmaxval): Use gfc_build_nan. (gfc_conv_intrinsic_fraction): Handle special values. (gfc_conv_intrinsic_spacing): Likewise. (gfc_conv_intrinsic_rrspacing): Likewise. (gfc_conv_intrinsic_set_exponent): Likewise. * gfortran.dg/ieee/intrinsics_2.F90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216443 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/trans-const.c')
-rw-r--r--gcc/fortran/trans-const.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/fortran/trans-const.c b/gcc/fortran/trans-const.c
index 9135f29fa3d..99a18328be1 100644
--- a/gcc/fortran/trans-const.c
+++ b/gcc/fortran/trans-const.c
@@ -256,6 +256,16 @@ gfc_build_inf_or_huge (tree type, int kind)
}
}
+/* Returns a floating-point NaN of a given type. */
+
+tree
+gfc_build_nan (tree type, const char *str)
+{
+ REAL_VALUE_TYPE real;
+ real_nan (&real, str, 1, TYPE_MODE (type));
+ return build_real (type, real);
+}
+
/* Converts a backend tree into a real constant. */
void