Adjust expr_not_equal_to to use irange API.

gcc/ChangeLog:

	* fold-const.c (expr_not_equal_to): Adjust for irange API.
This commit is contained in:
Aldy Hernandez 2020-08-04 06:46:09 +02:00
parent f21757eb8f
commit ab54c44fa6

View file

@ -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. */