On Wed, May 27, 2026 at 5:51 AM Daniel Barboza
<[email protected]> wrote:
>
> Hello,
>
> This is a follow-up of the merged series [1] where we started the
> process to deprecate -Wstrict-overflow.  I'll copy/paste the motivations
> for this effort from [1] for easier reference:
>
> "The idea from this work is inspired by Bugzilla 80511, suggested by
> Andrew in
>
> https://gcc.gnu.org/pipermail/gcc-patches/2026-January/705746.html
>
> and also by Richard comments about the current state of Wstrict-overflow
> here:
>
> https://gcc.gnu.org/pipermail/gcc-patches/2026-January/705482.html
>
> '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).' "
>
> In this series the idea is to deprecate -Wstrict-overflow by removing
> all its remaining logic, any related testcases and make the option a
> no-op (does nothing if set).
>
> Note that "Wstrict-overflow" and variants are still greppable in the
> code, in particular because we can't just remove the option entirely.
> If there's something else that we should be removing let me know and I'm
> happy to shave off more lines.
>
> Bootstrapped and regtested on x86_64 and aarch64.
>
> [1] https://gcc.gnu.org/pipermail/gcc-patches/2026-January/706112.html

There is one main thing missing from this set of patches; an update to
the docs; doc/invoke.texi needs an update.

Also note this warning option has actually been deprecated since GCC
8, from https://gcc.gnu.org/gcc-8/changes.html :
-fno-strict-overflow is now mapped to -fwrapv -fwrapv-pointer and
signed integer overflow is now undefined by default at all
optimization levels. Using -fsanitize=signed-integer-overflow is now
the preferred way to audit code, -Wstrict-overflow is deprecated.

Maybe not the most obvious place for the deprecation but it was there.
https://gcc.gnu.org/cgit/gcc-wwwdocs/commit/htdocs/gcc-8/changes.html?id=d2b33d4e76103b54336dd1198aa5a84b11cc29e3

Thanks,
Andrea

>
> Daniel Barboza (8):
>   tree-ssa-reassoc: remove strict_overflow_p from range_entry
>   tree-vrp: remove compare_values_warnv ()
>   gcc/expr.cc: remove Wstrict-overflow from maybe_optimize_sub_cmp_0
>   tree-ssa-loop-ch.cc remove strict_overflow logic
>   gcc/fold-const: remove fold_*_overflow_warnings
>   testsuite: remove all Wstrict-overflow tests
>   testsuite: remove Wstrict-overflow related tests
>   gcc: deprecate -Wstrict-overflow
>
>  gcc/c-family/c-common.cc                   | 10 ---
>  gcc/c/c-fold.cc                            |  2 -
>  gcc/common.opt                             |  2 +-
>  gcc/coretypes.h                            | 24 ------
>  gcc/expr.cc                                |  6 --
>  gcc/flags.h                                |  3 -
>  gcc/fold-const.cc                          | 99 ----------------------
>  gcc/fold-const.h                           |  4 -
>  gcc/gimple-fold.cc                         |  5 --
>  gcc/opts.cc                                |  4 +-
>  gcc/passes.cc                              | 12 ---
>  gcc/testsuite/gcc.dg/Wstrict-overflow-10.c | 10 ---
>  gcc/testsuite/gcc.dg/Wstrict-overflow-11.c | 19 -----
>  gcc/testsuite/gcc.dg/Wstrict-overflow-12.c | 16 ----
>  gcc/testsuite/gcc.dg/Wstrict-overflow-13.c | 18 ----
>  gcc/testsuite/gcc.dg/Wstrict-overflow-14.c | 15 ----
>  gcc/testsuite/gcc.dg/Wstrict-overflow-15.c | 15 ----
>  gcc/testsuite/gcc.dg/Wstrict-overflow-16.c | 11 ---
>  gcc/testsuite/gcc.dg/Wstrict-overflow-17.c | 20 -----
>  gcc/testsuite/gcc.dg/Wstrict-overflow-18.c | 23 -----
>  gcc/testsuite/gcc.dg/Wstrict-overflow-19.c | 15 ----
>  gcc/testsuite/gcc.dg/Wstrict-overflow-2.c  | 13 ---
>  gcc/testsuite/gcc.dg/Wstrict-overflow-20.c | 15 ----
>  gcc/testsuite/gcc.dg/Wstrict-overflow-21.c | 12 ---
>  gcc/testsuite/gcc.dg/Wstrict-overflow-23.c | 31 -------
>  gcc/testsuite/gcc.dg/Wstrict-overflow-25.c | 11 ---
>  gcc/testsuite/gcc.dg/Wstrict-overflow-26.c | 16 ----
>  gcc/testsuite/gcc.dg/Wstrict-overflow-27.c | 28 ------
>  gcc/testsuite/gcc.dg/Wstrict-overflow-4.c  | 13 ---
>  gcc/testsuite/gcc.dg/Wstrict-overflow-6.c  | 13 ---
>  gcc/testsuite/gcc.dg/Wstrict-overflow-7.c  | 10 ---
>  gcc/testsuite/gcc.dg/Wstrict-overflow-8.c  | 10 ---
>  gcc/testsuite/gcc.dg/pr36227.c             | 14 ---
>  gcc/testsuite/gcc.dg/pr48022-1.c           | 14 ---
>  gcc/testsuite/gcc.dg/pr48022-2.c           | 11 ---
>  gcc/testsuite/gcc.dg/pr49705.c             | 19 -----
>  gcc/testsuite/gcc.dg/pr52904.c             | 20 -----
>  gcc/testsuite/gcc.dg/pr81592.c             |  2 +-
>  gcc/testsuite/gcc.dg/pragma-diag-3.c       | 19 +----
>  gcc/tree-cfgcleanup.cc                     | 17 +---
>  gcc/tree-data-ref.cc                       |  2 -
>  gcc/tree-ssa-ccp.cc                        |  7 +-
>  gcc/tree-ssa-forwprop.cc                   | 14 +--
>  gcc/tree-ssa-loop-ch.cc                    | 44 ----------
>  gcc/tree-ssa-loop-niter.cc                 | 40 +--------
>  gcc/tree-ssa-reassoc.cc                    | 45 ++--------
>  gcc/tree-ssa-reassoc.h                     |  1 -
>  gcc/tree-ssa-threadedge.cc                 |  7 --
>  gcc/tree-vrp.cc                            | 44 +---------
>  gcc/tree-vrp.h                             |  1 -
>  gcc/vr-values.cc                           | 11 +--
>  51 files changed, 25 insertions(+), 812 deletions(-)
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-10.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-11.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-12.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-13.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-14.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-15.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-16.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-17.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-18.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-19.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-2.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-20.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-21.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-23.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-25.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-26.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-27.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-4.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-6.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-7.c
>  delete mode 100644 gcc/testsuite/gcc.dg/Wstrict-overflow-8.c
>  delete mode 100644 gcc/testsuite/gcc.dg/pr36227.c
>  delete mode 100644 gcc/testsuite/gcc.dg/pr48022-1.c
>  delete mode 100644 gcc/testsuite/gcc.dg/pr48022-2.c
>  delete mode 100644 gcc/testsuite/gcc.dg/pr49705.c
>  delete mode 100644 gcc/testsuite/gcc.dg/pr52904.c
>
> --
> 2.43.0
>

Reply via email to