Hi, This series of patches fixes PR61441. The fix is broken into 5 patches.
The first one adds REAL_VALUE_ISSIGNALING_NAN. 2015-11-26 Sujoy Saraswati <sujoy.sarasw...@hpe.com> PR tree-optimization/61441 * real.c (real_issignaling_nan): New. * real.h (real_issignaling_nan, REAL_VALUE_ISSIGNALING_NAN): New. Index: gcc/real.c =================================================================== --- gcc/real.c (revision 230851) +++ gcc/real.c (working copy) @@ -1195,6 +1195,13 @@ real_isnan (const REAL_VALUE_TYPE *r) return (r->cl == rvc_nan); } +/* Determine whether a floating-point value X is a signalling 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: gcc/real.h =================================================================== --- gcc/real.h (revision 230851) +++ gcc/real.h (working copy) @@ -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 signalling 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 signalling 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))