summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorssaraswati <ssaraswati@138bc75d-0d04-0410-961f-82ee72b054a4>2015-12-19 04:57:57 +0000
committerssaraswati <ssaraswati@138bc75d-0d04-0410-961f-82ee72b054a4>2015-12-19 04:57:57 +0000
commit7825c5b2d929859b650737df4c2ea09e1a0d282b (patch)
treeec918de3ae6e7c63dd169f8846d57718664be040
parent5ab11d5e9d155358a1bfbef101848ea51e90e079 (diff)
downloadgcc-7825c5b2d929859b650737df4c2ea09e1a0d282b.tar.gz
This series of patches fix PR61441. This patch adds REAL_VALUE_ISSIGNALING_NAN.
Bootstrapped & regression-tested on x86_64-linux-gnu. gcc/ * real.c (real_issignaling_nan): New. * real.h (real_issignaling_nan, REAL_VALUE_ISSIGNALING_NAN): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231848 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/real.c6
-rw-r--r--gcc/real.h6
3 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cccfd047809..d024128977a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-12-19 Sujoy Saraswati <sujoy.saraswati@hpe.com>
+
+ PR tree-optimization/61441
+ * real.c (real_issignaling_nan): New.
+ * real.h (real_issignaling_nan, REAL_VALUE_ISSIGNALING_NAN): New.
+
2015-13-18 John David Anglin <danglin@gcc.gnu.org>
PR target/68729
diff --git a/gcc/real.c b/gcc/real.c
index 0cc5aec7363..17d79c287f5 100644
--- a/gcc/real.c
+++ b/gcc/real.c
@@ -1195,6 +1195,12 @@ real_isnan (const REAL_VALUE_TYPE *r)
return (r->cl == rvc_nan);
}
+/* Determine whether a floating-point value X is a signaling NaN. */
+bool real_issignaling_nan (const REAL_VALUE_TYPE *r)
+{
+ return real_isnan (r) && r->signalling;
+}
+
/* Determine whether a floating-point value X is finite. */
bool
diff --git a/gcc/real.h b/gcc/real.h
index df5ccc95ee5..f92c480c6e3 100644
--- a/gcc/real.h
+++ b/gcc/real.h
@@ -262,6 +262,9 @@ extern bool real_isinf (const REAL_VALUE_TYPE *);
/* Determine whether a floating-point value X is a NaN. */
extern bool real_isnan (const REAL_VALUE_TYPE *);
+/* Determine whether a floating-point value X is a signaling NaN. */
+extern bool real_issignaling_nan (const REAL_VALUE_TYPE *);
+
/* Determine whether a floating-point value X is finite. */
extern bool real_isfinite (const REAL_VALUE_TYPE *);
@@ -357,6 +360,9 @@ extern const struct real_format arm_half_format;
/* Determine whether a floating-point value X is a NaN. */
#define REAL_VALUE_ISNAN(x) real_isnan (&(x))
+/* Determine whether a floating-point value X is a signaling NaN. */
+#define REAL_VALUE_ISSIGNALING_NAN(x) real_issignaling_nan (&(x))
+
/* Determine whether a floating-point value X is negative. */
#define REAL_VALUE_NEGATIVE(x) real_isneg (&(x))