commit:     782420d40abb8c5028c9eb4727c80dd28918c5bd
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 18 15:04:12 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Nov 18 15:04:12 2025 +0000
URL:        https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=782420d4

16.0.0: drop patch

It has some review comments pending.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 16.0.0/gentoo/88_all_PR122733.patch | 198 ------------------------------------
 16.0.0/gentoo/README.history        |   4 -
 2 files changed, 202 deletions(-)

diff --git a/16.0.0/gentoo/88_all_PR122733.patch 
b/16.0.0/gentoo/88_all_PR122733.patch
deleted file mode 100644
index 4d5604c..0000000
--- a/16.0.0/gentoo/88_all_PR122733.patch
+++ /dev/null
@@ -1,198 +0,0 @@
-From 48b2a124ed29231125fa2d048bf48f3ca5f4ebbf Mon Sep 17 00:00:00 2001
-Message-ID: 
<48b2a124ed29231125fa2d048bf48f3ca5f4ebbf.1763465020.git....@gentoo.org>
-From: Dhruv Chawla <[email protected]>
-Date: Tue, 18 Nov 2025 14:48:38 +0530
-Subject: [PATCH] PR tree-optimization/122733: Fix overflowing unsigned shift
- for (y << x) {<,<=,>,>=} x
-
-The patch previously committed as r16-5161-gc4ca512358be7c would
-miscompile the cases where the LHS was unsigned and overflowed, as the
-comparison would then give a different result. For example:
-
-__attribute__ ((noipa)) bool
-lshift_lt(unsigned x, unsigned y)
-{
-  if (y <= 0)
-    __builtin_unreachable ();
-  return (y << x) < x;
-}
-
-int main()
-{
-  if (!lshift_lt(1, 0x80000000))
-    __builtin_abort();
-}
-
-Here 0x80000000 << 1 evaluates to 0 which is < 1 hence the comparison
-evaluates to true. However this currently gets optimized to false, and
-similar cases are there for the other operators as well. Therefore this
-is only valid to do in the cases where overflow is undefined.
-
-Bootstrapped and regtested on aarch64-linux-gnu.
-
-Signed-off-by: Dhruv Chawla <[email protected]>
-
-       PR tree-optimization/122733
-
-gcc/ChangeLog:
-
-       * match.pd: Add TYPE_OVERFLOW_UNDEFINED check to patterns. Also
-       replace build_one_cst/build_zero_cst with
-       constant_boolean_node.
-
-gcc/testsuite/ChangeLog:
-
-* gcc.dg/match-shift-cmp-1.c: Update counts to match changes.
-       * gcc.dg/match-shift-cmp-4.c: Likewise.
-       * gcc.dg/match-shift-cmp-5.c: New test.
----
- gcc/match.pd                             | 18 ++++----
- gcc/testsuite/gcc.dg/match-shift-cmp-1.c |  3 +-
- gcc/testsuite/gcc.dg/match-shift-cmp-4.c |  7 +++-
- gcc/testsuite/gcc.dg/match-shift-cmp-5.c | 53 ++++++++++++++++++++++++
- 4 files changed, 70 insertions(+), 11 deletions(-)
- create mode 100644 gcc/testsuite/gcc.dg/match-shift-cmp-5.c
-
-diff --git a/gcc/match.pd b/gcc/match.pd
-index 63d56b081925..1f5c7a34613a 100644
---- a/gcc/match.pd
-+++ b/gcc/match.pd
-@@ -1339,37 +1339,39 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
-     (if (INTEGRAL_TYPE_P (type))
-       (rshift (op @0 @2) @1))))
- 
--/* (y << x) == x -> 0 when y != 0.  */
-+/* (y << x) == x -> false when y != 0.  */
- (simplify
-   (eq:c (nop_convert1? (lshift @0 @1)) (nop_convert2? @1))
-   (if (INTEGRAL_TYPE_P (TREE_TYPE (@1))
-        && tree_expr_nonzero_p (@0))
--   { build_zero_cst (type); }))
-+   { constant_boolean_node (false, type); }))
- 
--/* (y << x) {<,<=} x -> 0 when y > 0.  */
-+/* (y << x) {<,<=} x -> false when y > 0 (unless y wraps around).  */
- (for cmp (lt le)
-   (simplify
-     (cmp:c (nop_convert1? (lshift @0 @1)) (nop_convert2? @1))
-     (if (INTEGRAL_TYPE_P (TREE_TYPE (@1))
-+       && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (@1))
-        && tree_expr_nonzero_p (@0)
-        && tree_expr_nonnegative_p (@0))
--     { build_zero_cst (type); })))
-+     { constant_boolean_node (false, type); })))
- 
--/* (y << x) != x -> 1 when y != 0.  */
-+/* (y << x) != x -> true when y != 0.  */
- (simplify
-   (ne:c (nop_convert1? (lshift @0 @1)) (nop_convert2? @1))
-   (if (INTEGRAL_TYPE_P (TREE_TYPE (@1))
-        && tree_expr_nonzero_p (@0))
--   { build_one_cst (type); }))
-+   { constant_boolean_node (true, type); }))
- 
--/* (y << x) {>,>=} x -> 1 when y > 0.  */
-+/* (y << x) {>,>=} x -> true when y > 0 (unless y wraps around).  */
- (for cmp (gt ge)
-   (simplify
-     (cmp:c (nop_convert1? (lshift @0 @1)) (nop_convert2? @1))
-     (if (INTEGRAL_TYPE_P (TREE_TYPE (@1))
-+       && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (@1))
-        && tree_expr_nonzero_p (@0)
-        && tree_expr_nonnegative_p (@0))
--     { build_one_cst (type); })))
-+     { constant_boolean_node (true, type); })))
- 
- /* Fold (1 << (C - x)) where C = precision(type) - 1
-    into ((1 << C) >> x). */
-diff --git a/gcc/testsuite/gcc.dg/match-shift-cmp-1.c 
b/gcc/testsuite/gcc.dg/match-shift-cmp-1.c
-index b22d57d370f1..6439c5255d85 100644
---- a/gcc/testsuite/gcc.dg/match-shift-cmp-1.c
-+++ b/gcc/testsuite/gcc.dg/match-shift-cmp-1.c
-@@ -46,5 +46,6 @@ TEST_OP (gt, >)
- TEST_OP (le, <=)
- TEST_OP (ge, >=)
- 
-+/* The unsigned cases for lt, le, gt and ge are not optimized.  */
- /* FIXME: The lt, le, gt and ge cases for int and enum don't get optimized.  
*/
--/* { dg-final { scan-tree-dump-times "<<" 8 optimized } } */
-+/* { dg-final { scan-tree-dump-times "<<" 16 optimized } } */
-diff --git a/gcc/testsuite/gcc.dg/match-shift-cmp-4.c 
b/gcc/testsuite/gcc.dg/match-shift-cmp-4.c
-index 629e2a376d11..7eddd80f8b59 100644
---- a/gcc/testsuite/gcc.dg/match-shift-cmp-4.c
-+++ b/gcc/testsuite/gcc.dg/match-shift-cmp-4.c
-@@ -47,5 +47,8 @@ TEST_OP (gt, >)
- TEST_OP (le, <=)
- TEST_OP (ge, >=)
- 
--/* { dg-final { scan-tree-dump-times "return 0;" 18 optimized } } */
--/* { dg-final { scan-tree-dump-times "return 1;" 18 optimized } } */
-+/* { dg-final { scan-tree-dump-times "return 0;" 14 optimized } } */
-+/* { dg-final { scan-tree-dump-times "return 1;" 14 optimized } } */
-+
-+/* The unsigned cases for lt, le, gt and ge are not optimized.  */
-+/* { dg-final { scan-tree-dump-times "<<" 8 optimized } } */
-diff --git a/gcc/testsuite/gcc.dg/match-shift-cmp-5.c 
b/gcc/testsuite/gcc.dg/match-shift-cmp-5.c
-new file mode 100644
-index 000000000000..4e3f8722ad3d
---- /dev/null
-+++ b/gcc/testsuite/gcc.dg/match-shift-cmp-5.c
-@@ -0,0 +1,53 @@
-+/* { dg-do run } */
-+/* { dg-options "-O2 -fdump-tree-optimized" } */
-+
-+/* PR tree-optimization/122733 */
-+
-+__attribute__ ((noipa)) bool
-+lshift_lt(unsigned x, unsigned y)
-+{
-+  if (y <= 0)
-+    __builtin_unreachable ();
-+  return (y << x) < x;
-+}
-+
-+__attribute__ ((noipa)) bool
-+lshift_le(unsigned x, unsigned y)
-+{
-+  if (y <= 0)
-+    __builtin_unreachable ();
-+  return (y << x) <= x;
-+}
-+
-+__attribute__ ((noipa)) bool
-+lshift_gt(unsigned x, unsigned y)
-+{
-+  if (y <= 0)
-+    __builtin_unreachable ();
-+  return (y << x) > x;
-+}
-+
-+__attribute__ ((noipa)) bool
-+lshift_ge(unsigned x, unsigned y)
-+{
-+  if (y <= 0)
-+    __builtin_unreachable ();
-+  return (y << x) >= x;
-+}
-+
-+int main()
-+{
-+  if (!lshift_lt(1, 0x80000000))
-+    __builtin_abort();
-+
-+  if (!lshift_le(1, 0x80000000))
-+    __builtin_abort();
-+
-+  if (lshift_gt(1, 0x80000000))
-+    __builtin_abort();
-+
-+   if (lshift_ge(1, 0x80000000))
-+    __builtin_abort();
-+}
-+
-+/* { dg-final { scan-tree-dump-times "<<" 4 optimized } } */
-
-base-commit: ac45382d0c06bc1a90ce74e0379e52496ab3bffe
--- 
-2.51.2
-

diff --git a/16.0.0/gentoo/README.history b/16.0.0/gentoo/README.history
index f8b4030..fbe9c7c 100644
--- a/16.0.0/gentoo/README.history
+++ b/16.0.0/gentoo/README.history
@@ -1,7 +1,3 @@
-24     ????
-
-       + 88_all_PR122733.patch
-
 23     17 November 2025
 
        - 88_all_PR122620-firefox.patch

Reply via email to