diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2023-03-04 12:35:07 +0100 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2023-05-01 08:33:16 +0200 |
commit | bd0ac4b275daa91100fb22711f7f74637b382e29 (patch) | |
tree | 6ca42f1aaf502c092cc7371810fa01e152f91c8b /gcc | |
parent | 178abecaa9ca96acee6e155261d4dc50dd98fab4 (diff) | |
download | gcc-bd0ac4b275daa91100fb22711f7f74637b382e29.zip gcc-bd0ac4b275daa91100fb22711f7f74637b382e29.tar.gz gcc-bd0ac4b275daa91100fb22711f7f74637b382e29.tar.bz2 |
Inline irange::set_nonzero.
irange::set_nonzero is used everywhere and benefits immensely from
inlining.
gcc/ChangeLog:
* value-range.h (irange::set_nonzero): Inline.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/value-range.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/gcc/value-range.h b/gcc/value-range.h index 9a834c9..5cff50e 100644 --- a/gcc/value-range.h +++ b/gcc/value-range.h @@ -886,8 +886,24 @@ irange::upper_bound () const inline void irange::set_nonzero (tree type) { - wide_int zero = wi::zero (TYPE_PRECISION (type)); - set (type, zero, zero, VR_ANTI_RANGE); + unsigned prec = TYPE_PRECISION (type); + + if (TYPE_UNSIGNED (type)) + { + m_type = type; + m_kind = VR_RANGE; + m_base[0] = wi::one (prec); + m_base[1] = m_nonzero_mask = wi::minus_one (prec); + m_num_ranges = 1; + + if (flag_checking) + verify_range (); + } + else + { + wide_int zero = wi::zero (prec); + set (type, zero, zero, VR_ANTI_RANGE); + } } // Set value range VR to a ZERO range of type TYPE. |