From: Aldy Hernandez Date: Thu, 2 Mar 2023 15:56:12 +0000 (+0100) Subject: Convert compare_nonzero_chars to wide_ints. X-Git-Tag: basepoints/gcc-15~9881 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fb5607ae6ad468fe1183b7a3b392d445010ada41;p=thirdparty%2Fgcc.git Convert compare_nonzero_chars to wide_ints. gcc/ChangeLog: * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints. --- diff --git a/gcc/tree-ssa-strlen.cc b/gcc/tree-ssa-strlen.cc index 0bbcb04834ff..de785281b27d 100644 --- a/gcc/tree-ssa-strlen.cc +++ b/gcc/tree-ssa-strlen.cc @@ -359,10 +359,10 @@ compare_nonzero_chars (strinfo *si, gimple *stmt, of the length range are equal return the result of the comparison same as in the constant case. Otherwise return a conservative result. */ - 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)) + signop sign = TYPE_SIGN (vr.type ()); + unsigned prec = TYPE_PRECISION (vr.type ()); + int cmpmin = wi::cmp (vr.lower_bound (), wi::uhwi (off, prec), sign); + if (cmpmin > 0 || vr.singleton_p ()) return cmpmin; return -1;