aboutsummaryrefslogtreecommitdiff
path: root/gcc/value-range.h
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2023-09-18 11:39:32 -0400
committerAldy Hernandez <aldyh@redhat.com>2023-09-19 12:30:01 -0400
commitcb3f870fdbe47ae9623fb176776ee196db1c5358 (patch)
treec3a768a561c3529501a09f5d8c928e78d32e17e6 /gcc/value-range.h
parent9c739c9893ca6af841e7c67cce0ad9c17a248d13 (diff)
downloadgcc-cb3f870fdbe47ae9623fb176776ee196db1c5358.zip
gcc-cb3f870fdbe47ae9623fb176776ee196db1c5358.tar.gz
gcc-cb3f870fdbe47ae9623fb176776ee196db1c5358.tar.bz2
Add frange::update_nan (const nan_state &).
We can set_nan() with a nan_state so it's good form to have the analogous form for update_nan(). gcc/ChangeLog: * value-range.h (frange::update_nan): New.
Diffstat (limited to 'gcc/value-range.h')
-rw-r--r--gcc/value-range.h28
1 files changed, 16 insertions, 12 deletions
diff --git a/gcc/value-range.h b/gcc/value-range.h
index da04be0..a792c59 100644
--- a/gcc/value-range.h
+++ b/gcc/value-range.h
@@ -1257,36 +1257,40 @@ frange::set_undefined ()
verify_range ();
}
-// Set the NAN bit and adjust the range.
+// Set the NAN bits to NAN and adjust the range.
inline void
-frange::update_nan ()
+frange::update_nan (const nan_state &nan)
{
gcc_checking_assert (!undefined_p ());
if (HONOR_NANS (m_type))
{
- m_pos_nan = true;
- m_neg_nan = true;
+ m_pos_nan = nan.pos_p ();
+ m_neg_nan = nan.neg_p ();
normalize_kind ();
if (flag_checking)
verify_range ();
}
}
+// Set the NAN bit to +-NAN.
+
+inline void
+frange::update_nan ()
+{
+ gcc_checking_assert (!undefined_p ());
+ nan_state nan (true);
+ update_nan (nan);
+}
+
// Like above, but set the sign of the NAN.
inline void
frange::update_nan (bool sign)
{
gcc_checking_assert (!undefined_p ());
- if (HONOR_NANS (m_type))
- {
- m_pos_nan = !sign;
- m_neg_nan = sign;
- normalize_kind ();
- if (flag_checking)
- verify_range ();
- }
+ nan_state nan (/*pos=*/!sign, /*neg=*/sign);
+ update_nan (nan);
}
inline bool