https://gcc.gnu.org/g:10adbc54a5e1fd89eb69ce1bced4c74b7047fd24
commit r16-1200-g10adbc54a5e1fd89eb69ce1bced4c74b7047fd24 Author: Richard Biener <rguent...@suse.de> Date: Wed May 28 15:26:48 2025 +0200 Use ranger for table based CTZ detection The following uses context sensitive ranger for determining whether the input to the table based CTZ is ever zero. * tree-ssa-forwprop.cc (simplify_count_trailing_zeroes): Use ranger instead of tree_expr_nonzero_p. Diff: --- gcc/tree-ssa-forwprop.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/tree-ssa-forwprop.cc b/gcc/tree-ssa-forwprop.cc index 4ef75ba98bd1..a60862a4b1a9 100644 --- a/gcc/tree-ssa-forwprop.cc +++ b/gcc/tree-ssa-forwprop.cc @@ -2667,7 +2667,12 @@ simplify_count_trailing_zeroes (gimple_stmt_iterator *gsi) int nargs = 2; /* If the input value can't be zero, don't special case ctz (0). */ - if (tree_expr_nonzero_p (res_ops[0])) + range_query *q = get_range_query (cfun); + if (q == get_global_range_query ()) + q = enable_ranger (cfun); + int_range_max vr; + if (q->range_of_expr (vr, res_ops[0], stmt) + && !range_includes_zero_p (vr)) { zero_ok = true; zero_val = 0;