aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2025-05-28 15:26:48 +0200
committerRichard Biener <rguenther@suse.de>2025-06-06 09:16:01 +0200
commit10adbc54a5e1fd89eb69ce1bced4c74b7047fd24 (patch)
treeafa14ca5ba9c988bcc30521ee30b03ff30a7ebf2
parent63a8128218cc421b4294f9b8b139197a985ce375 (diff)
downloadgcc-10adbc54a5e1fd89eb69ce1bced4c74b7047fd24.zip
gcc-10adbc54a5e1fd89eb69ce1bced4c74b7047fd24.tar.gz
gcc-10adbc54a5e1fd89eb69ce1bced4c74b7047fd24.tar.bz2
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.
-rw-r--r--gcc/tree-ssa-forwprop.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/tree-ssa-forwprop.cc b/gcc/tree-ssa-forwprop.cc
index 4ef75ba..a60862a 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;