[gcc/devel/jlaw/pr119422] Daniel's 119422 work + fixes for INTEGRAL_TYPE_P.

Jeff Law law@gcc.gnu.org
Tue Mar 17 20:37:27 GMT 2026


https://gcc.gnu.org/g:d577f12c9f383acf1a66dbc36c04d251782956a4

commit d577f12c9f383acf1a66dbc36c04d251782956a4
Author: Jeff Law <jeffrey.law@oss.qualcomm.com>
Date:   Thu Mar 12 21:09:08 2026 -0600

    Daniel's 119422 work + fixes for INTEGRAL_TYPE_P.

Diff:
---
 gcc/match.pd                             |  7 +++++++
 gcc/testsuite/gcc.dg/tree-ssa/pr119422.c | 13 +++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/gcc/match.pd b/gcc/match.pd
index 1d6428bf7e53..ae5bb701e92f 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -5367,6 +5367,13 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
       @0)))))
 #endif
 
+/* PR119422: (bool >= A) >= A -> bool >= A;  */
+(simplify
+ (ge (convert? (ge zero_one_valued_p@0 @1)) @1)
+  (if (INTEGRAL_TYPE_P (TREE_TYPE (@1))
+       && TYPE_UNSIGNED (TREE_TYPE (@1)))
+   (ge @0 @1)))
+
 /* Rewrite an LROTATE_EXPR by a constant into an
    RROTATE_EXPR by a new constant.  */
 (simplify
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr119422.c b/gcc/testsuite/gcc.dg/tree-ssa/pr119422.c
new file mode 100644
index 000000000000..780558b24b9d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr119422.c
@@ -0,0 +1,13 @@
+/* { dg-additional-options -O2 } */
+/* { dg-additional-options -fdump-tree-optimized } */
+
+typedef enum my_bool {
+   val0 = 0,
+   val1 = 1
+} my_bool;
+
+int gg (unsigned u, my_bool b)
+{
+  return u <= (u <= (unsigned)b);
+}
+/* { dg-final { scan-tree-dump-times " >= " 1 "optimized" } } */


More information about the Gcc-cvs mailing list