https://gcc.gnu.org/g:6fc0b287385d645f122bae89ca20ffb71836a862

commit r17-1051-g6fc0b287385d645f122bae89ca20ffb71836a862
Author: Daniel Barboza <[email protected]>
Date:   Fri Jan 16 03:05:18 2026 -0800

    tree-ssa-reassoc: remove strict_overflow_p from range_entry
    
    Continuing the deprecation of -Wstrict-overflow, remove the
    strict_overflow_p flag from range_entry and the two associated
    warning_at calls.
    
    gcc/ChangeLog:
    
            * tree-ssa-reassoc.cc (init_range_entry): Removed
            strict_overflow_p use.
            (force_into_ssa_name): Likewise.
            (update_range_test): Removed strict_overflow_p from function
            signature, along with the flag associated logic and the
            warning_at call.
            (optimize_range_tests_xor): Removed strict_overflow_p use.
            (optimize_range_tests_diff): Likewise.
            (optimize_range_tests_to_bit_test): Likewise.
            (optimize_range_tests_cmp_bitwise): Likewise.
            (optimize_range_tests_var_bound): Removed strict_overflow_p from
            function signature, along with the flag associated logic and the
            warning_at call.
            (optimize_range_tests): Removed strict_overflow_p use.
            * tree-ssa-reassoc.h (struct range_entry): Removed
            strict_overflow_p flag.

Diff:
---
 gcc/tree-ssa-reassoc.cc | 45 ++++++++-------------------------------------
 gcc/tree-ssa-reassoc.h  |  1 -
 2 files changed, 8 insertions(+), 38 deletions(-)

diff --git a/gcc/tree-ssa-reassoc.cc b/gcc/tree-ssa-reassoc.cc
index f786a7daf349..e97385611e97 100644
--- a/gcc/tree-ssa-reassoc.cc
+++ b/gcc/tree-ssa-reassoc.cc
@@ -2541,11 +2541,10 @@ init_range_entry (struct range_entry *r, tree exp, 
gimple *stmt)
 {
   int in_p;
   tree low, high;
-  bool is_bool, strict_overflow_p;
+  bool is_bool;
 
   r->exp = NULL_TREE;
   r->in_p = false;
-  r->strict_overflow_p = false;
   r->low = NULL_TREE;
   r->high = NULL_TREE;
   if (exp != NULL_TREE
@@ -2560,7 +2559,6 @@ init_range_entry (struct range_entry *r, tree exp, gimple 
*stmt)
   low = exp ? build_int_cst (TREE_TYPE (exp), 0) : boolean_false_node;
   high = low;
   in_p = 0;
-  strict_overflow_p = false;
   is_bool = false;
   if (exp == NULL_TREE)
     is_bool = true;
@@ -2677,7 +2675,6 @@ init_range_entry (struct range_entry *r, tree exp, gimple 
*stmt)
       r->in_p = in_p;
       r->low = low;
       r->high = high;
-      r->strict_overflow_p = strict_overflow_p;
     }
 }
 
@@ -2781,7 +2778,7 @@ force_into_ssa_name (gimple_stmt_iterator *gsi, tree 
expr, bool before)
 }
 
 /* Helper routine of optimize_range_test.
-   [EXP, IN_P, LOW, HIGH, STRICT_OVERFLOW_P] is a merged range for
+   [EXP, IN_P, LOW, HIGH] is a merged range for
    RANGE and OTHERRANGE through OTHERRANGE + COUNT - 1 ranges,
    OPCODE and OPS are arguments of optimize_range_tests.  If OTHERRANGE
    is NULL, OTHERRANGEP should not be and then OTHERRANGEP points to
@@ -2797,7 +2794,7 @@ update_range_test (struct range_entry *range, struct 
range_entry *otherrange,
                   struct range_entry **otherrangep,
                   unsigned int count, enum tree_code opcode,
                   vec<operand_entry *> *ops, tree exp, gimple_seq seq,
-                  bool in_p, tree low, tree high, bool strict_overflow_p)
+                  bool in_p, tree low, tree high)
 {
   unsigned int idx = range->idx;
   struct range_entry *swap_with = NULL;
@@ -2849,7 +2846,6 @@ update_range_test (struct range_entry *range, struct 
range_entry *otherrange,
   tree optype = op ? TREE_TYPE (op) : boolean_type_node;
   tree tem = build_range_check (loc, optype, unshare_expr (exp),
                                in_p, low, high);
-  enum warn_strict_overflow_code wc = WARN_STRICT_OVERFLOW_COMPARISON;
   gimple_stmt_iterator gsi;
   unsigned int i, uid;
 
@@ -2881,11 +2877,6 @@ update_range_test (struct range_entry *range, struct 
range_entry *otherrange,
   if (swap_with)
     std::swap (range->idx, swap_with->idx);
 
-  if (strict_overflow_p && issue_strict_overflow_warning (wc))
-    warning_at (loc, OPT_Wstrict_overflow,
-               "assuming signed overflow does not occur "
-               "when simplifying range test");
-
   if (dump_file && (dump_flags & TDF_DETAILS))
     {
       struct range_entry *r;
@@ -3007,7 +2998,6 @@ update_range_test (struct range_entry *range, struct 
range_entry *otherrange,
   range->low = low;
   range->high = high;
   range->in_p = in_p;
-  range->strict_overflow_p = false;
 
   for (i = 0; i < count; i++)
     {
@@ -3085,9 +3075,7 @@ optimize_range_tests_xor (enum tree_code opcode, tree 
type,
   lowj = fold_build2 (BIT_AND_EXPR, type, lowi, tem);
   highj = fold_build2 (BIT_AND_EXPR, type, highi, tem);
   if (update_range_test (rangei, rangej, NULL, 1, opcode, ops, exp,
-                        NULL, rangei->in_p, lowj, highj,
-                        rangei->strict_overflow_p
-                        || rangej->strict_overflow_p))
+                        NULL, rangei->in_p, lowj, highj))
     return true;
   return false;
 }
@@ -3143,9 +3131,7 @@ optimize_range_tests_diff (enum tree_code opcode, tree 
type,
   tem1 = fold_build2 (BIT_AND_EXPR, type, tem1, mask);
   lowj = build_int_cst (type, 0);
   if (update_range_test (rangei, rangej, NULL, 1, opcode, ops, tem1,
-                        NULL, rangei->in_p, lowj, tem2,
-                        rangei->strict_overflow_p
-                        || rangej->strict_overflow_p))
+                        NULL, rangei->in_p, lowj, tem2))
     return true;
   return false;
 }
@@ -3322,7 +3308,6 @@ optimize_range_tests_to_bit_test (enum tree_code opcode, 
int first, int length,
                                        highi, &mask, &lowi);
       if (exp == NULL_TREE)
        continue;
-      bool strict_overflow_p = ranges[i].strict_overflow_p;
       candidates.truncate (0);
       int end = MIN (i + 64, length);
       for (j = i + 1; j < end; j++)
@@ -3361,7 +3346,6 @@ optimize_range_tests_to_bit_test (enum tree_code opcode, 
int first, int length,
          if (exp2 != exp)
            continue;
          mask |= mask2;
-         strict_overflow_p |= ranges[j].strict_overflow_p;
          candidates.safe_push (&ranges[j]);
        }
 
@@ -3487,7 +3471,7 @@ optimize_range_tests_to_bit_test (enum tree_code opcode, 
int first, int length,
          tree val = build_zero_cst (optype);
          if (update_range_test (&ranges[i], NULL, candidates.address (),
                                 candidates.length (), opcode, ops, exp,
-                                seq, false, val, val, strict_overflow_p))
+                                seq, false, val, val))
            {
              any_changes = true;
              if (tem)
@@ -3628,14 +3612,12 @@ optimize_range_tests_cmp_bitwise (enum tree_code 
opcode, int first, int length,
          }
        tree type1 = TREE_TYPE (ranges[k - 1].exp);
        tree type2 = NULL_TREE;
-       bool strict_overflow_p = false;
        candidates.truncate (0);
        if (POINTER_TYPE_P (type1) || TREE_CODE (type1) == OFFSET_TYPE)
          type1 = pointer_sized_int_node;
        for (j = i; j; j = chains[j - 1])
          {
            tree type = TREE_TYPE (ranges[j - 1].exp);
-           strict_overflow_p |= ranges[j - 1].strict_overflow_p;
            if (POINTER_TYPE_P (type) || TREE_CODE (type) == OFFSET_TYPE)
              type = pointer_sized_int_node;
            if ((b % 4) == 3)
@@ -3749,7 +3731,7 @@ optimize_range_tests_cmp_bitwise (enum tree_code opcode, 
int first, int length,
        if (update_range_test (&ranges[k - 1], NULL, candidates.address (),
                               candidates.length (), opcode, ops, op,
                               seq, ranges[k - 1].in_p, ranges[k - 1].low,
-                              ranges[k - 1].high, strict_overflow_p))
+                              ranges[k - 1].high))
          any_changes = true;
        else
          gimple_seq_discard (seq);
@@ -3955,14 +3937,6 @@ optimize_range_tests_var_bound (enum tree_code opcode, 
int first, int length,
         and RHS2 is known to be RHS2 >= 0.  */
       tree utype = unsigned_type_for (TREE_TYPE (rhs1));
 
-      enum warn_strict_overflow_code wc = WARN_STRICT_OVERFLOW_COMPARISON;
-      if ((ranges[*idx].strict_overflow_p
-          || ranges[i].strict_overflow_p)
-         && issue_strict_overflow_warning (wc))
-       warning_at (gimple_location (stmt), OPT_Wstrict_overflow,
-                   "assuming signed overflow does not occur "
-                   "when simplifying range test");
-
       if (dump_file && (dump_flags & TDF_DETAILS))
        {
          struct range_entry *r = &ranges[*idx];
@@ -4044,7 +4018,6 @@ optimize_range_tests_var_bound (enum tree_code opcode, 
int first, int length,
          ranges[i].low = build_zero_cst (TREE_TYPE (ranges[i].exp));
          ranges[i].high = ranges[i].low;
        }
-      ranges[i].strict_overflow_p = false;
       oe = (*ops)[ranges[*idx].idx];
       /* Now change all the other range test immediate uses, so that
         those tests will be optimized away.  */
@@ -4118,7 +4091,6 @@ optimize_range_tests (enum tree_code opcode,
       tree low = ranges[i].low;
       tree high = ranges[i].high;
       int in_p = ranges[i].in_p;
-      bool strict_overflow_p = ranges[i].strict_overflow_p;
       int update_fail_count = 0;
 
       for (j = i + 1; j < length; j++)
@@ -4128,7 +4100,6 @@ optimize_range_tests (enum tree_code opcode,
          if (!merge_ranges (&in_p, &low, &high, in_p, low, high,
                             ranges[j].in_p, ranges[j].low, ranges[j].high))
            break;
-         strict_overflow_p |= ranges[j].strict_overflow_p;
        }
 
       if (j == i + 1)
@@ -4136,7 +4107,7 @@ optimize_range_tests (enum tree_code opcode,
 
       if (update_range_test (ranges + i, ranges + i + 1, NULL, j - i - 1,
                             opcode, ops, ranges[i].exp, NULL, in_p,
-                            low, high, strict_overflow_p))
+                            low, high))
        {
          i = j - 1;
          any_changes = true;
diff --git a/gcc/tree-ssa-reassoc.h b/gcc/tree-ssa-reassoc.h
index ddd462ee0740..2e16acd64485 100644
--- a/gcc/tree-ssa-reassoc.h
+++ b/gcc/tree-ssa-reassoc.h
@@ -36,7 +36,6 @@ struct range_entry
   tree low;
   tree high;
   bool in_p;
-  bool strict_overflow_p;
   unsigned int idx, next;
 };

Reply via email to