aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range-cache.cc
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2021-10-04 15:30:44 -0400
committerAndrew MacLeod <amacleod@redhat.com>2021-10-06 09:19:06 -0400
commitad451b020a24fe7111e668f8c41a3ba648104569 (patch)
treedb39edc76cfbe976d513ef738e65096d0f255775 /gcc/gimple-range-cache.cc
parent3ca950c3525527846f13e8c547368ef432547a23 (diff)
downloadgcc-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.cc6
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;