aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2020-08-04 06:46:09 +0200
committerAldy Hernandez <aldyh@redhat.com>2020-08-04 07:23:42 +0200
commitab54c44fa6f66de4627a795f0783ea0163d17143 (patch)
treea511c53e44a270b458b0a0cb70da18e58f9ac5ee /gcc
parentf21757eb8fa74ad8a6f64cd7f9137b07f4714e11 (diff)
downloadgcc-ab54c44fa6f66de4627a795f0783ea0163d17143.zip
gcc-ab54c44fa6f66de4627a795f0783ea0163d17143.tar.gz
gcc-ab54c44fa6f66de4627a795f0783ea0163d17143.tar.bz2
Adjust expr_not_equal_to to use irange API.
gcc/ChangeLog: * fold-const.c (expr_not_equal_to): Adjust for irange API.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fold-const.c17
1 files changed, 4 insertions, 13 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 1324a19..5d27927 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -10194,8 +10194,7 @@ tree_expr_nonzero_p (tree t)
bool
expr_not_equal_to (tree t, const wide_int &w)
{
- wide_int min, max, nz;
- value_range_kind rtype;
+ value_range vr;
switch (TREE_CODE (t))
{
case INTEGER_CST:
@@ -10204,17 +10203,9 @@ expr_not_equal_to (tree t, const wide_int &w)
case SSA_NAME:
if (!INTEGRAL_TYPE_P (TREE_TYPE (t)))
return false;
- rtype = get_range_info (t, &min, &max);
- if (rtype == VR_RANGE)
- {
- if (wi::lt_p (max, w, TYPE_SIGN (TREE_TYPE (t))))
- return true;
- if (wi::lt_p (w, min, TYPE_SIGN (TREE_TYPE (t))))
- return true;
- }
- else if (rtype == VR_ANTI_RANGE
- && wi::le_p (min, w, TYPE_SIGN (TREE_TYPE (t)))
- && wi::le_p (w, max, TYPE_SIGN (TREE_TYPE (t))))
+ get_range_info (t, vr);
+ if (!vr.undefined_p ()
+ && !vr.contains_p (wide_int_to_tree (TREE_TYPE (t), w)))
return true;
/* If T has some known zero bits and W has any of those bits set,
then T is known not to be equal to W. */