diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2020-08-04 06:46:09 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2020-08-04 07:23:42 +0200 |
commit | ab54c44fa6f66de4627a795f0783ea0163d17143 (patch) | |
tree | a511c53e44a270b458b0a0cb70da18e58f9ac5ee | |
parent | f21757eb8fa74ad8a6f64cd7f9137b07f4714e11 (diff) | |
download | gcc-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.
-rw-r--r-- | gcc/fold-const.c | 17 |
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. */ |