aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-strlen.cc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2023-01-17 19:56:36 +0100
committerAldy Hernandez <aldyh@redhat.com>2023-04-26 11:46:06 +0200
commit637037f4e637563c4f50ed04adfa2baf90671491 (patch)
tree5e86d7b77243da68fd97d2c6cbd071b77ba597af /gcc/tree-ssa-strlen.cc
parent1a8087c7d1cb3ca1daa87a61766923bad0143700 (diff)
downloadgcc-637037f4e637563c4f50ed04adfa2baf90671491.zip
gcc-637037f4e637563c4f50ed04adfa2baf90671491.tar.gz
gcc-637037f4e637563c4f50ed04adfa2baf90671491.tar.bz2
Remove some uses of deprecated irange API.
gcc/ChangeLog: * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange API uses to new API. * gimple-predicate-analysis.cc (find_var_cmp_const): Same. * internal-fn.cc (get_min_precision): Same. * match.pd: Same. * tree-affine.cc (expr_to_aff_combination): Same. * tree-data-ref.cc (dr_step_indicator): Same. * tree-dfa.cc (get_ref_base_and_extent): Same. * tree-scalar-evolution.cc (iv_can_overflow_p): Same. * tree-ssa-phiopt.cc (two_value_replacement): Same. * tree-ssa-pre.cc (insert_into_preds_of_block): Same. * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same. * tree-ssa-strlen.cc (compare_nonzero_chars): Same. * tree-switch-conversion.cc (bit_test_cluster::emit): Same. * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same. * tree.cc (get_range_pos_neg): Same.
Diffstat (limited to 'gcc/tree-ssa-strlen.cc')
-rw-r--r--gcc/tree-ssa-strlen.cc13
1 files changed, 7 insertions, 6 deletions
diff --git a/gcc/tree-ssa-strlen.cc b/gcc/tree-ssa-strlen.cc
index dcc9e9e..0bbcb04 100644
--- a/gcc/tree-ssa-strlen.cc
+++ b/gcc/tree-ssa-strlen.cc
@@ -350,18 +350,19 @@ compare_nonzero_chars (strinfo *si, gimple *stmt,
return -1;
value_range vr;
- if (!rvals->range_of_expr (vr, si->nonzero_chars, stmt))
- return -1;
- value_range_kind rng = vr.kind ();
- if (rng != VR_RANGE)
+ if (!rvals->range_of_expr (vr, si->nonzero_chars, stmt)
+ || vr.varying_p ()
+ || vr.undefined_p ())
return -1;
/* If the offset is less than the minimum length or if the bounds
of the length range are equal return the result of the comparison
same as in the constant case. Otherwise return a conservative
result. */
- int cmpmin = compare_tree_int (vr.min (), off);
- if (cmpmin > 0 || tree_int_cst_equal (vr.min (), vr.max ()))
+ tree lower = wide_int_to_tree (vr.type (), vr.lower_bound ());
+ tree upper = wide_int_to_tree (vr.type (), vr.upper_bound ());
+ int cmpmin = compare_tree_int (lower, off);
+ if (cmpmin > 0 || tree_int_cst_equal (lower, upper))
return cmpmin;
return -1;