This series of patches fix PR61441. This patch adds REAL_VALUE_ISSIGNALING_NAN.
authorSujoy Saraswati <sujoy.saraswati@hpe.com>
Sat, 19 Dec 2015 04:57:57 +0000 (04:57 +0000)
committerSujoy Saraswati <ssaraswati@gcc.gnu.org>
Sat, 19 Dec 2015 04:57:57 +0000 (04:57 +0000)
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.

From-SVN: r231848

gcc/ChangeLog
gcc/real.c
gcc/real.h

index cccfd0478090744354c1d22d64452cbe54b0138f..d024128977ad06417097ad7e4b95f20b3b2dfb95 100644 (file)
@@ -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
index 0cc5aec7363079397f6428d081ee6132ca4efa6b..17d79c287f53c44b163290ffd0c4778b336277bf 100644 (file)
@@ -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
index df5ccc95ee5c8eedd58e81d53f637e8b209cff09..f92c480c6e3c8909597374b401e83498749c041a 100644 (file)
@@ -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))