commit: 2d46a55f13c74051a9abb3758e4829f20c396561 Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Sun Nov 2 08:31:46 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sun Nov 2 08:31:46 2025 +0000 URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=2d46a55f
16.0.0: add 88_all_PR122502.patch Bug: https://gcc.gnu.org/PR122497 Bug: https://gcc.gnu.org/PR122502 Signed-off-by: Sam James <sam <AT> gentoo.org> 16.0.0/gentoo/88_all_PR122502.patch | 314 ++++++++++++++++++++++++++++++++++++ 16.0.0/gentoo/README.history | 4 + 2 files changed, 318 insertions(+) diff --git a/16.0.0/gentoo/88_all_PR122502.patch b/16.0.0/gentoo/88_all_PR122502.patch new file mode 100644 index 0000000..8e8aca4 --- /dev/null +++ b/16.0.0/gentoo/88_all_PR122502.patch @@ -0,0 +1,314 @@ +From accd9639a67f0774f29514e67e0f79ea88359235 Mon Sep 17 00:00:00 2001 +Message-ID: <accd9639a67f0774f29514e67e0f79ea88359235.1762072263.git....@gentoo.org> +From: Sam James <[email protected]> +Date: Sun, 2 Nov 2025 08:30:21 +0000 +Subject: [PATCH] Revert "niter: Use ranger to query ctz range." + +This reverts commit 0919526efcb156a17947a2fc68d7aaa487e273ae. + +Bug: https://gcc.gnu.org/PR122497 +Bug: https://gcc.gnu.org/PR122502 +--- + gcc/testsuite/gcc.dg/pr41488.c | 2 +- + gcc/testsuite/gcc.dg/tree-ssa/ctz-ch.c | 23 ----- + gcc/testsuite/gcc.dg/tree-ssa/ctz-char.c | 2 +- + .../gcc.dg/tree-ssa/ctz-complement-char.c | 2 +- + .../gcc.dg/tree-ssa/ctz-complement-int.c | 2 +- + .../tree-ssa/ctz-complement-long-long.c | 2 +- + .../gcc.dg/tree-ssa/ctz-complement-long.c | 2 +- + gcc/testsuite/gcc.dg/tree-ssa/ctz-int.c | 2 +- + gcc/testsuite/gcc.dg/tree-ssa/ctz-long-long.c | 2 +- + gcc/testsuite/gcc.dg/tree-ssa/ctz-long.c | 2 +- + gcc/tree-ssa-loop-niter.cc | 93 +------------------ + gcc/tree-ssa-loop.cc | 5 - + 12 files changed, 12 insertions(+), 127 deletions(-) + delete mode 100644 gcc/testsuite/gcc.dg/tree-ssa/ctz-ch.c + +diff --git a/gcc/testsuite/gcc.dg/pr41488.c b/gcc/testsuite/gcc.dg/pr41488.c +index a7ba3672efef..1e4bf19c7da9 100644 +--- a/gcc/testsuite/gcc.dg/pr41488.c ++++ b/gcc/testsuite/gcc.dg/pr41488.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-tree-scev-cprop -fdump-tree-ivcanon-scev" } */ ++/* { dg-options "-O2 -fdump-tree-ivcanon-scev" } */ + + struct struct_t + { +diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ctz-ch.c b/gcc/testsuite/gcc.dg/tree-ssa/ctz-ch.c +deleted file mode 100644 +index 5d725979971b..000000000000 +--- a/gcc/testsuite/gcc.dg/tree-ssa/ctz-ch.c ++++ /dev/null +@@ -1,23 +0,0 @@ +-/* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-optimized" } */ +- +-typedef unsigned long BITMAP_WORD; +- +-bool +-bmp_iter_set (BITMAP_WORD bits, unsigned *bit_no) +-{ +- /* If our current word is nonzero, it contains the bit we want. */ +- if (bits) +- { +- while (!(bits & 1)) +- { +- bits >>= 1; +- *bit_no += 1; +- } +- return true; +- } +- +- return false; +-} +- +-/* { dg-final { scan-tree-dump-times "__builtin_ctz|\\.CTZ" 1 "optimized" } } */ +diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ctz-char.c b/gcc/testsuite/gcc.dg/tree-ssa/ctz-char.c +index fa8b7f39de4b..3cd166acbd46 100644 +--- a/gcc/testsuite/gcc.dg/tree-ssa/ctz-char.c ++++ b/gcc/testsuite/gcc.dg/tree-ssa/ctz-char.c +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ctz } */ +-/* { dg-options "-O2 -fdump-tree-optimized" } */ ++/* { dg-options "-O2 -fno-tree-ch -fdump-tree-optimized" } */ + + #define PREC (__CHAR_BIT__) + +diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-char.c b/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-char.c +index 5ebc32131692..b9afe8852d8f 100644 +--- a/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-char.c ++++ b/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-char.c +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ctz } */ +-/* { dg-options "-O2 -fno-tree-ch -fdump-tree-optimized" } */ ++/* { dg-options "-O2 -fdump-tree-optimized" } */ + + #define PREC (__CHAR_BIT__) + +diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-int.c b/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-int.c +index 0ce4b6beaa7d..d2702a65daf3 100644 +--- a/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-int.c ++++ b/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-int.c +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ctz } */ +-/* { dg-options "-O2 -fno-tree-ch -fdump-tree-optimized" } */ ++/* { dg-options "-O2 -fdump-tree-optimized" } */ + + #define PREC (__CHAR_BIT__ * __SIZEOF_INT__) + +diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-long-long.c b/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-long-long.c +index f98bec039b35..1ea0d5d7d9f8 100644 +--- a/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-long-long.c ++++ b/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-long-long.c +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ctzll } */ +-/* { dg-options "-O2 -fno-tree-ch -fdump-tree-optimized" } */ ++/* { dg-options "-O2 -fdump-tree-optimized" } */ + + #define PREC (__CHAR_BIT__ * __SIZEOF_LONG_LONG__) + +diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-long.c b/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-long.c +index 8edb3728131c..80fb02dcfa68 100644 +--- a/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-long.c ++++ b/gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-long.c +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ctzl } */ +-/* { dg-options "-O2 -fno-tree-ch -fdump-tree-optimized" } */ ++/* { dg-options "-O2 -fdump-tree-optimized" } */ + + #define PREC (__CHAR_BIT__ * __SIZEOF_LONG__) + +diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ctz-int.c b/gcc/testsuite/gcc.dg/tree-ssa/ctz-int.c +index 2bf3ae69b938..7f63493eb738 100644 +--- a/gcc/testsuite/gcc.dg/tree-ssa/ctz-int.c ++++ b/gcc/testsuite/gcc.dg/tree-ssa/ctz-int.c +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ctz } */ +-/* { dg-options "-O2 -fdump-tree-optimized" } */ ++/* { dg-options "-O2 -fno-tree-ch -fdump-tree-optimized" } */ + + #define PREC (__CHAR_BIT__ * __SIZEOF_INT__) + +diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ctz-long-long.c b/gcc/testsuite/gcc.dg/tree-ssa/ctz-long-long.c +index 2e159485cb98..924f61b76f01 100644 +--- a/gcc/testsuite/gcc.dg/tree-ssa/ctz-long-long.c ++++ b/gcc/testsuite/gcc.dg/tree-ssa/ctz-long-long.c +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ctzll } */ +-/* { dg-options "-O2 -fdump-tree-optimized" } */ ++/* { dg-options "-O2 -fno-tree-ch -fdump-tree-optimized" } */ + + #define PREC (__CHAR_BIT__ * __SIZEOF_LONG_LONG__) + +diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ctz-long.c b/gcc/testsuite/gcc.dg/tree-ssa/ctz-long.c +index 2e3be652a0bc..178945daa8a2 100644 +--- a/gcc/testsuite/gcc.dg/tree-ssa/ctz-long.c ++++ b/gcc/testsuite/gcc.dg/tree-ssa/ctz-long.c +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ctzl } */ +-/* { dg-options "-O2 -fdump-tree-optimized" } */ ++/* { dg-options "-O2 -fno-tree-ch -fdump-tree-optimized" } */ + + #define PREC (__CHAR_BIT__ * __SIZEOF_LONG__) + +diff --git a/gcc/tree-ssa-loop-niter.cc b/gcc/tree-ssa-loop-niter.cc +index cc763839edcd..6e1308625491 100644 +--- a/gcc/tree-ssa-loop-niter.cc ++++ b/gcc/tree-ssa-loop-niter.cc +@@ -2321,48 +2321,6 @@ is_rshift_by_1 (gassign *stmt) + return false; + } + +-/* Helper for number_of_iterations_cltz that uses ranger to determine +- if SRC's range, shifted left (when LEFT_SHIFT is true) or right +- by NUM_IGNORED_BITS, is guaranteed to be != 0 on LOOP's preheader +- edge. +- Return true if so or false otherwise. */ +- +-static bool +-shifted_range_nonzero_p (loop_p loop, tree src, +- bool left_shift, int num_ignored_bits) +-{ +- int_range_max r (TREE_TYPE (src)); +- gcc_assert (num_ignored_bits >= 0); +- +- if (get_range_query (cfun)->range_on_edge +- (r, loop_preheader_edge (loop), src) +- && !r.varying_p () +- && !r.undefined_p ()) +- { +- if (num_ignored_bits) +- { +- range_op_handler op (left_shift ? LSHIFT_EXPR : RSHIFT_EXPR); +- int_range_max shifted_range (TREE_TYPE (src)); +- wide_int shift_count = wi::shwi (num_ignored_bits, +- TYPE_PRECISION (TREE_TYPE +- (src))); +- int_range_max shift_amount +- (TREE_TYPE (src), shift_count, shift_count); +- +- if (op.fold_range (shifted_range, TREE_TYPE (src), r, +- shift_amount)) +- r = shifted_range; +- } +- +- /* If the range does not contain zero we are good. */ +- if (!range_includes_zero_p (r)) +- return true; +- } +- +- return false; +-} +- +- + /* See comment below for number_of_iterations_bitcount. + For c[lt]z, we have: + +@@ -2480,9 +2438,6 @@ number_of_iterations_cltz (loop_p loop, edge exit, + tree src = gimple_phi_arg_def (phi, loop_preheader_edge (loop)->dest_idx); + int src_precision = TYPE_PRECISION (TREE_TYPE (src)); + +- /* Save the original SSA name before preprocessing for ranger queries. */ +- tree unshifted_src = src; +- + /* Apply any needed preprocessing to src. */ + int num_ignored_bits; + if (left_shift) +@@ -2508,52 +2463,10 @@ number_of_iterations_cltz (loop_p loop, edge exit, + + expr = fold_convert (unsigned_type_node, expr); + +- /* If the copy-header (ch) pass peeled one iteration we're shifting +- SRC by preprocessing it above. +- +- A loop like +- if (bits) +- { +- while (!(bits & 1)) +- { +- bits >>= 1; +- cnt += 1; +- } +- return cnt; +- } +- ch (roughly) transforms into: +- if (bits) +- { +- if (!(bits & 1) +- { +- do +- { +- bits >>= 1; +- cnt += 1; +- } while (!(bits & 1)); +- } +- else +- cnt = 1; +- return cnt; +- } +- +- Then, our preprocessed SRC (that is used for c[tl]z computation) +- will be bits >> 1, and the assumption is bits >> 1 != 0. */ +- +- tree assumptions; +- if (shifted_range_nonzero_p (loop, unshifted_src, +- left_shift, num_ignored_bits)) +- assumptions = boolean_true_node; +- else +- { +- /* If ranger couldn't prove the assumption, try +- simplify_using_initial_conditions. */ +- assumptions = fold_build2 (NE_EXPR, boolean_type_node, src, +- build_zero_cst (TREE_TYPE (src))); +- assumptions = simplify_using_initial_conditions (loop, assumptions); +- } ++ tree assumptions = fold_build2 (NE_EXPR, boolean_type_node, src, ++ build_zero_cst (TREE_TYPE (src))); + +- niter->assumptions = assumptions; ++ niter->assumptions = simplify_using_initial_conditions (loop, assumptions); + niter->may_be_zero = boolean_false_node; + niter->niter = simplify_using_initial_conditions (loop, expr); + +diff --git a/gcc/tree-ssa-loop.cc b/gcc/tree-ssa-loop.cc +index dc4b560e9245..5629524afb2f 100644 +--- a/gcc/tree-ssa-loop.cc ++++ b/gcc/tree-ssa-loop.cc +@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see + #include "tm_p.h" + #include "fold-const.h" + #include "gimple-iterator.h" +-#include "gimple-range.h" + #include "tree-ssa-loop-ivopts.h" + #include "tree-ssa-loop-manip.h" + #include "tree-ssa-loop-niter.h" +@@ -405,15 +404,11 @@ pass_scev_cprop::execute (function *) + { + bool any = false; + +- enable_ranger (cfun); +- + /* Perform final value replacement in loops, in case the replacement + expressions are cheap. */ + for (auto loop : loops_list (cfun, LI_FROM_INNERMOST)) + any |= final_value_replacement_loop (loop); + +- disable_ranger (cfun); +- + return any ? TODO_cleanup_cfg | TODO_update_ssa_only_virtuals : 0; + } + + +base-commit: 6b6696fa3dfc13d26fbb01856757b73df80fe161 +-- +2.51.2 + diff --git a/16.0.0/gentoo/README.history b/16.0.0/gentoo/README.history index b32ebc2..3519731 100644 --- a/16.0.0/gentoo/README.history +++ b/16.0.0/gentoo/README.history @@ -1,3 +1,7 @@ +20 ???? + + + 88_all_PR122502.patch + 19 27 October 2025 - 87_all_PR122322-revert-rtems.patch
