Hi,

The idea from this work is inspired by Bugzilla 80511, suggested by
Andrew in [1], and also by Richard comments about the current state of
Wstrict-overflow in [2], which I'll post here for reference:

"Ah, we should remove that note.  -Wstrict-overflow proved useless IMO,
it's way too noisy as it diagnoses when the compiler relies on overflow
not happening, not diagnosing when it possibly happens.  That's not a
very useful diagnostic to have - it does not point to a possible problem
in the code (we could as well diagnose _all_ signed arithmetic
operations for the same argument that we might eventually rely on
overflow not happening)."

Richard's feeling about Wstrict-overflow is also echoed throughout
Bugzilla 80511. 

This series is dedicated to purge Wstrict-overflow support from
fold-const.cc. Most notably by removing the fold_overflow_warn() helper,
used by the file to issue strict overflow warnings.

The individual changes are trivial, but the amount of helpers involved,
some of them called outside of fold-const.cc, makes it for a unpleasant
time reviewing the changes. This is the main motivation for the patches
being split they way they are. They can be squashed in fewer patches, or
split in even more patches, if needed.

Some changes ended up removing certain Wstrict-overflow-N.c tests, which
I believe is a desired side-effect for deprecating Wstrict-overflow. 

If we decide this work in on the right direction I have a second, smaller
follow up series, that excludes the remaining of Wstrict-overflow logic
from GCC. All Wstrict-overflow-N.c test files are removed, all
associated logic in passes also removed, leaving just the command line
option (that I suppose would go through some form of deprecation process
instead of just plain removal).


[1] https://gcc.gnu.org/pipermail/gcc-patches/2026-January/705746.html
[2] https://gcc.gnu.org/pipermail/gcc-patches/2026-January/705482.html

Daniel Barboza (13):
  fold-const.cc: remove strict_overflow flag from make_range helpers
  fold-const.cc: remove strict_overflow_p from extract_muldiv
  fold-const.cc: remove strict_overflow_p from
    tree_unary_nonzero_warnv_p
  fold-const.cc: remove strict_overflow_p from
    tree_binary_nonzero_warnv_p
  fold-const.cc: remove strict_overflow_p from
    tree_single_nonzero_warnv_p
  fold-const.cc: remove strict_overflow_p from tree_expr_nonzero_warnv_p
  fold-const.cc: remove strict_overflow_p from
    maybe_canonicalize_comparison
  fold-const.cc: remove strict_overflow_p from tree_binary_nonnegative
  fold-const.cc: remove strict_overflow_p from tree_unary_nonnegative
  fold-const.cc: remove strict_overflow_p flag from
    tree_single_nonnegative_p
  fold-const.cc: remove strict_overflow_p from tree_expr_nonnegative
    helpers
  fold-const.cc: overhaul tree_expr_nonnegative_(warn)_p
  fold-const.cc: remove fold_overflow_warning()

 gcc/c-family/c-ubsan.cc                    |   6 +-
 gcc/c-family/c-warn.cc                     |   8 +-
 gcc/c/c-typeck.cc                          |   6 +-
 gcc/fold-const.cc                          | 642 +++++----------------
 gcc/fold-const.h                           |  26 +-
 gcc/gimple-fold.cc                         |  68 +--
 gcc/gimple-fold.h                          |   2 +-
 gcc/gimple-range-fold.cc                   |  12 +-
 gcc/ipa-prop.cc                            |   3 +-
 gcc/testsuite/gcc.dg/Wstrict-overflow-22.c |  13 -
 gcc/testsuite/gcc.dg/Wstrict-overflow-24.c |  10 -
 gcc/testsuite/gcc.dg/Wstrict-overflow-3.c  |  13 -
 gcc/testsuite/gcc.dg/Wstrict-overflow-5.c  |  13 -
 gcc/testsuite/gcc.dg/Wstrict-overflow-9.c  |  10 -
 gcc/testsuite/gcc.dg/pr56355-1.c           |   8 -
 gcc/tree-ssa-loop-manip.cc                 |   4 +-
 gcc/tree-ssa-phiopt.cc                     |   2 +-
 gcc/tree-ssa-reassoc.cc                    |   3 +-
 gcc/value-query.cc                         |   3 +-
 19 files changed, 202 insertions(+), 650 deletions(-)
 delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-22.c
 delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-24.c
 delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-3.c
 delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-5.c
 delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-9.c
 delete mode 100644 gcc/testsuite/gcc.dg/pr56355-1.c

-- 
2.43.0

Reply via email to