diff options
author | ssaraswati <ssaraswati@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-12-19 04:57:57 +0000 |
---|---|---|
committer | ssaraswati <ssaraswati@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-12-19 04:57:57 +0000 |
commit | 7825c5b2d929859b650737df4c2ea09e1a0d282b (patch) | |
tree | ec918de3ae6e7c63dd169f8846d57718664be040 | |
parent | 5ab11d5e9d155358a1bfbef101848ea51e90e079 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/real.c | 6 | ||||
-rw-r--r-- | gcc/real.h | 6 |
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)) |