diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2022-12-21 13:06:23 +0100 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2023-04-26 13:49:42 +0200 |
commit | ebef388ec3448896ca59c2e6775cdf84bf13c54a (patch) | |
tree | a1c1d2349f5aa579f4d2fb88e83544f2878fe985 /gcc/tree-ssa-strlen.cc | |
parent | fb5607ae6ad468fe1183b7a3b392d445010ada41 (diff) | |
download | gcc-ebef388ec3448896ca59c2e6775cdf84bf13c54a.zip gcc-ebef388ec3448896ca59c2e6775cdf84bf13c54a.tar.gz gcc-ebef388ec3448896ca59c2e6775cdf84bf13c54a.tar.bz2 |
Remove range_int_cst_p.
gcc/ChangeLog:
* tree-data-ref.cc (compute_distributive_range): Replace uses of
range_int_cst_p with irange API.
* tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
* tree-vrp.h (range_int_cst_p): Delete.
* vr-values.cc (check_for_binary_op_overflow): Replace usees of
range_int_cst_p with irange API.
(vr_set_zero_nonzero_bits): Same.
(range_fits_type_p): Same.
(simplify_using_ranges::simplify_casted_cond): Same.
* tree-vrp.cc (range_int_cst_p): Remove.
Diffstat (limited to 'gcc/tree-ssa-strlen.cc')
-rw-r--r-- | gcc/tree-ssa-strlen.cc | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/gcc/tree-ssa-strlen.cc b/gcc/tree-ssa-strlen.cc index de78528..4bf1830 100644 --- a/gcc/tree-ssa-strlen.cc +++ b/gcc/tree-ssa-strlen.cc @@ -1222,13 +1222,14 @@ get_range_strlen_dynamic (tree src, gimple *stmt, { value_range vr; ptr_qry->rvals->range_of_expr (vr, si->nonzero_chars, si->stmt); - if (range_int_cst_p (&vr)) + if (vr.undefined_p () || vr.varying_p ()) + pdata->minlen = build_zero_cst (size_type_node); + else { - pdata->minlen = vr.min (); - pdata->maxlen = vr.max (); + tree type = vr.type (); + pdata->minlen = wide_int_to_tree (type, vr.lower_bound ()); + pdata->maxlen = wide_int_to_tree (type, vr.upper_bound ()); } - else - pdata->minlen = build_zero_cst (size_type_node); } else pdata->minlen = build_zero_cst (size_type_node); @@ -1266,21 +1267,22 @@ get_range_strlen_dynamic (tree src, gimple *stmt, { value_range vr; ptr_qry->rvals->range_of_expr (vr, si->nonzero_chars, stmt); - if (range_int_cst_p (&vr)) + if (vr.varying_p () || vr.undefined_p ()) + { + pdata->minlen = build_zero_cst (size_type_node); + pdata->maxlen = build_all_ones_cst (size_type_node); + } + else { - pdata->minlen = vr.min (); - pdata->maxlen = vr.max (); + tree type = vr.type (); + pdata->minlen = wide_int_to_tree (type, vr.lower_bound ()); + pdata->maxlen = wide_int_to_tree (type, vr.upper_bound ()); offset_int max = offset_int::from (vr.upper_bound (0), SIGNED); if (tree maxbound = get_maxbound (si->ptr, stmt, max, ptr_qry)) pdata->maxbound = maxbound; else pdata->maxbound = pdata->maxlen; } - else - { - pdata->minlen = build_zero_cst (size_type_node); - pdata->maxlen = build_all_ones_cst (size_type_node); - } } else if (pdata->minlen && TREE_CODE (pdata->minlen) == INTEGER_CST) { |