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;

Reply via email to