aboutsummaryrefslogtreecommitdiff
path: root/gcc/value-range.h
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2023-03-04 12:35:07 +0100
committerAldy Hernandez <aldyh@redhat.com>2023-05-01 08:33:16 +0200
commitbd0ac4b275daa91100fb22711f7f74637b382e29 (patch)
tree6ca42f1aaf502c092cc7371810fa01e152f91c8b /gcc/value-range.h
parent178abecaa9ca96acee6e155261d4dc50dd98fab4 (diff)
downloadgcc-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/value-range.h')
-rw-r--r--gcc/value-range.h20
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.