diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2021-10-04 15:30:44 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2021-10-06 09:19:06 -0400 |
commit | ad451b020a24fe7111e668f8c41a3ba648104569 (patch) | |
tree | db39edc76cfbe976d513ef738e65096d0f255775 /gcc/gimple-range-cache.cc | |
parent | 3ca950c3525527846f13e8c547368ef432547a23 (diff) | |
download | gcc-ad451b020a24fe7111e668f8c41a3ba648104569.zip gcc-ad451b020a24fe7111e668f8c41a3ba648104569.tar.gz gcc-ad451b020a24fe7111e668f8c41a3ba648104569.tar.bz2 |
Add range intersect with 2 wide-ints.
Add a more efficent intersect using a lower/upper bound single pair of
wide_ints.
* gimple-range-cache.cc (non_null_ref::adjust_range): Call new
intersect routine.
* gimple-range-fold.cc (adjust_pointer_diff_expr): Ditto.
(adjust_imagpart_expr): Ditto.
* value-range.cc (irange::irange_intersect): Call new routine if
RHS is a single pair.
(irange::intersect): New wide_int version.
* value-range.h (class irange): New prototype.
Diffstat (limited to 'gcc/gimple-range-cache.cc')
-rw-r--r-- | gcc/gimple-range-cache.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index 91dd5a5..7d99479 100644 --- a/gcc/gimple-range-cache.cc +++ b/gcc/gimple-range-cache.cc @@ -105,9 +105,9 @@ non_null_ref::adjust_range (irange &r, tree name, basic_block bb, // Check if pointers have any non-null dereferences. if (non_null_deref_p (name, bb, search_dom)) { - int_range<2> nz; - nz.set_nonzero (TREE_TYPE (name)); - r.intersect (nz); + // Remove zero from the range. + unsigned prec = TYPE_PRECISION (TREE_TYPE (name)); + r.intersect (wi::one (prec), wi::max_value (prec, UNSIGNED)); return true; } return false; |