]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Add method to query the sign of a NAN.
authorAldy Hernandez <aldyh@redhat.com>
Tue, 11 Oct 2022 17:21:14 +0000 (19:21 +0200)
committerAldy Hernandez <aldyh@redhat.com>
Wed, 12 Oct 2022 06:49:00 +0000 (08:49 +0200)
In writing some range-op entries I noticed we don't have a way to
query the sign of the NAN in a range, unless the range only contains
NAN, in which case you can just use frange::signbit_p.  This patch
adds a method that returns TRUE if there exists the possiblity of a
NAN and we know its sign.

gcc/ChangeLog:

* value-range.h (frange::nan_signbit_p): New.

gcc/value-range.h

index cb5e9d0522ccba14a70d175fd76710b698b52c32..60b989b2b50351c0281d4a0fdc8b4ed1e99ac3a1 100644 (file)
@@ -328,6 +328,7 @@ public:
   bool maybe_isnan (bool sign) const;
   bool maybe_isinf () const;
   bool signbit_p (bool &signbit) const;
+  bool nan_signbit_p (bool &signbit) const;
 private:
   void verify_range ();
   bool normalize_kind ();
@@ -1358,4 +1359,20 @@ frange::signbit_p (bool &signbit) const
   return false;
 }
 
+// If range has a NAN with a known sign, set it in SIGNBIT and return
+// TRUE.
+
+inline bool
+frange::nan_signbit_p (bool &signbit) const
+{
+  if (undefined_p ())
+    return false;
+
+  if (m_pos_nan == m_neg_nan)
+    return false;
+
+  signbit = m_neg_nan;
+  return true;
+}
+
 #endif // GCC_VALUE_RANGE_H