From: Aldy Hernandez Date: Tue, 4 Aug 2020 04:46:09 +0000 (+0200) Subject: Adjust expr_not_equal_to to use irange API. X-Git-Tag: basepoints/gcc-12~5729 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ab54c44fa6f66de4627a795f0783ea0163d17143;p=thirdparty%2Fgcc.git Adjust expr_not_equal_to to use irange API. gcc/ChangeLog: * fold-const.c (expr_not_equal_to): Adjust for irange API. --- diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 1324a194995a..5d27927f6bfd 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. */