diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2023-09-18 11:39:32 -0400 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2023-09-19 12:30:01 -0400 |
commit | cb3f870fdbe47ae9623fb176776ee196db1c5358 (patch) | |
tree | c3a768a561c3529501a09f5d8c928e78d32e17e6 /gcc/value-range.h | |
parent | 9c739c9893ca6af841e7c67cce0ad9c17a248d13 (diff) | |
download | gcc-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.h | 28 |
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 |