summaryrefslogtreecommitdiff
path: root/gcc/builtins.def
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-09-17 01:28:50 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-09-17 01:28:50 +0000
commitb0db7939a3a9dbe5cdc3f21b65c7727a0a723fe0 (patch)
tree13b37fe93a02d7ab652503bcdc4b3b55cdb5e3d6 /gcc/builtins.def
parent7c4f0b1d149a7f54e531cc148616dd6838816eb2 (diff)
downloadgcc-b0db7939a3a9dbe5cdc3f21b65c7727a0a723fe0.tar.gz
gcc/
* builtin-types.def (BT_FN_FLOAT_CONST_STRING): New. (BT_FN_DOUBLE_CONST_STRING, BT_FN_LONG_DOUBLE_CONST_STRING): New. * builtins.def (__builtin_nan, __builtin_nanf, __builtin_nanl): New. (__builtin_nans, __builtin_nansf, __builtin_nansl): New. * builtins.c (fold_builtin_nan): New. (fold_builtin): Call it. * real.c (real_nan): Parse a non-empty string. (round_for_format): Fix NaN significand truncation. * real.h (real_nan): Return bool. * doc/extend.texi: Document new builtins. libstdc++/ * include/std/std_limits.h (__glibcpp_f32_QNaN_bytes, __glibcpp_f32_has_QNaN, __glibcpp_f32_SNaN_bytes, __glibcpp_f32_has_SNaN, __glibcpp_f64_QNaN_bytes, __glibcpp_f64_has_QNaN, __glibcpp_f64_SNaN_bytes, __glibcpp_f64_has_SNaN, __glibcpp_f80_QNaN_bytes, __glibcpp_f80_has_QNaN, __glibcpp_f80_SNaN_bytes, __glibcpp_f80_has_SNaN, __glibcpp_f96_QNaN_bytes, __glibcpp_f96_has_QNaN, __glibcpp_f96_SNaN_bytes, __glibcpp_f96_has_SNaN, __glibcpp_f128_QNaN_bytes, __glibcpp_f128_has_QNaN, __glibcpp_f128_SNaN_bytes, __glibcpp_f128_has_SNaN, __glibcpp_float_QNaN_bytes, __glibcpp_float_has_QNaN, __glibcpp_float_SNaN_bytes, __glibcpp_float_has_SNaN, __glibcpp_double_QNaN_bytes, __glibcpp_double_has_QNaN, __glibcpp_double_SNaN_bytes, __glibcpp_double_has_SNaN, __glibcpp_long_double_QNaN_bytes, __glibcpp_long_double_has_QNaN, __glibcpp_long_double_SNaN_bytes, __glibcpp_long_double_has_SNaN): Remove. (__glibcpp_f128_is_iec559): True if IEEE. (__glibcpp_float_QNaN, __glibcpp_float_SNaN): Remove. (__glibcpp_double_QNaN, __glibcpp_double_SNaN): Remove. (__glibcpp_long_double_QNaN, __glibcpp_long_double_SNaN): Remove. (std::numeric_limits<float>::has_quiet_NaN): Use __builtin_nanf. (std::numeric_limits<float>::has_signaling_NaN): Mirror has_quiet_NaN. (std::numeric_limits<float>::quiet_NaN): Use __builtin_nanf. (std::numeric_limits<float>::signaling_NaN): Use __builtin_nansf. (std::numeric_limits<double>): Similarly. (std::numeric_limits<long double>): Similarly. * src/limits.cc (__glibcpp_float_QNaN, __glibcpp_float_SNaN): Remove. (__glibcpp_double_QNaN, __glibcpp_double_SNaN): Remove. (__glibcpp_long_double_QNaN, __glibcpp_long_double_SNaN): Remove. * testsuite/18_support/numeric_limits.cc (test_infinity): New. (test_denorm_min, test_qnan, test_is_iec559): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57221 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/builtins.def')
-rw-r--r--gcc/builtins.def26
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/builtins.def b/gcc/builtins.def
index 60acc101fbc..8a3dac33236 100644
--- a/gcc/builtins.def
+++ b/gcc/builtins.def
@@ -427,6 +427,32 @@ DEF_GCC_BUILTIN(BUILT_IN_HUGE_VALL,
BT_FN_LONG_DOUBLE,
ATTR_CONST_NOTHROW_LIST)
+DEF_LIB_BUILTIN(BUILT_IN_NAN,
+ "__builtin_nan",
+ BT_FN_DOUBLE_CONST_STRING,
+ ATTR_CONST_NOTHROW_LIST)
+DEF_LIB_BUILTIN(BUILT_IN_NANF,
+ "__builtin_nanf",
+ BT_FN_FLOAT_CONST_STRING,
+ ATTR_CONST_NOTHROW_LIST)
+DEF_LIB_BUILTIN(BUILT_IN_NANL,
+ "__builtin_nanl",
+ BT_FN_LONG_DOUBLE_CONST_STRING,
+ ATTR_CONST_NOTHROW_LIST)
+
+DEF_LIB_BUILTIN(BUILT_IN_NANS,
+ "__builtin_nans",
+ BT_FN_DOUBLE_CONST_STRING,
+ ATTR_CONST_NOTHROW_LIST)
+DEF_LIB_BUILTIN(BUILT_IN_NANSF,
+ "__builtin_nansf",
+ BT_FN_FLOAT_CONST_STRING,
+ ATTR_CONST_NOTHROW_LIST)
+DEF_LIB_BUILTIN(BUILT_IN_NANSL,
+ "__builtin_nansl",
+ BT_FN_LONG_DOUBLE_CONST_STRING,
+ ATTR_CONST_NOTHROW_LIST)
+
DEF_GCC_BUILTIN(BUILT_IN_SAVEREGS,
"__builtin_saveregs",
BT_FN_PTR_VAR,