https://gcc.gnu.org/g:a3ded15ccfe436efbf60e9f35d02c6904f2417c3
commit r17-1057-ga3ded15ccfe436efbf60e9f35d02c6904f2417c3 Author: Daniel Barboza <[email protected]> Date: Tue May 26 13:56:05 2026 -0300 testsuite: remove Wstrict-overflow related tests The following testsuite PRs are related to the now obsolete Wstrict-overflow option: - Bug 36227 - [4.3 Regression] POINTER_PLUS folding introduces undefined overflow - Bug 48022 - [4.6 Regression] -Wstrict-overflow warning on code that doesn't have overflows - Bug 49705 - -Wstrict-overflow should not diagnose unevaluated expressions - Bug 52904 - -Wstrict-overflow false alarm with bounded loop They are exercising code that no longer exists, so remove all of them. Two other tests (pr81592.c and pragma-diag-3.c) have Wstrict-overflow checks that got removed. gcc/testsuite/ChangeLog: * gcc.dg/pr81592.c: Removed strict-overflow options. * gcc.dg/pragma-diag-3.c: Removed Wstrict-overflow option, along with a reference and tests for PR66098 ("[5 regression] #pragma diagnostic 'ignored' not fullyundone by pop for strict-overflow"). * gcc.dg/pr36227.c: Removed. * gcc.dg/pr48022-1.c: Removed. * gcc.dg/pr48022-2.c: Removed. * gcc.dg/pr49705.c: Removed. * gcc.dg/pr52904.c: Removed. Diff: --- 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 ++----------------- 7 files changed, 3 insertions(+), 96 deletions(-) diff --git a/gcc/testsuite/gcc.dg/pr36227.c b/gcc/testsuite/gcc.dg/pr36227.c deleted file mode 100644 index ba0d72249397..000000000000 --- a/gcc/testsuite/gcc.dg/pr36227.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -Wstrict-overflow=3" } */ -typedef __UINTPTR_TYPE__ ptrcast; - -volatile unsigned long * -sat_add(volatile unsigned long *ptr, unsigned long i, volatile unsigned long *end) -{ - if ((ptrcast)ptr + i * sizeof(*ptr) > (ptrcast)ptr) /* { dg-bogus "pointer wraparound" } */ - return ptr + i; - else - return end; -} - - diff --git a/gcc/testsuite/gcc.dg/pr48022-1.c b/gcc/testsuite/gcc.dg/pr48022-1.c deleted file mode 100644 index 14eb550307cb..000000000000 --- a/gcc/testsuite/gcc.dg/pr48022-1.c +++ /dev/null @@ -1,14 +0,0 @@ -/* PR tree-optimization/48022 */ -/* { dg-do compile } */ -/* { dg-options "-O2 -Wstrict-overflow" } */ - -int -foo (const char *x) -{ - unsigned long l = 1; - const unsigned char *s = (const unsigned char *) (const char *) (x); - int r = s[0] - ((const unsigned char *) (const char *) ("/"))[0]; - if (l > 0 && r == 0) - r = (s[1] - ((const unsigned char *) (const char *) ("/"))[1]); - return r; -} diff --git a/gcc/testsuite/gcc.dg/pr48022-2.c b/gcc/testsuite/gcc.dg/pr48022-2.c deleted file mode 100644 index 41fcb533819c..000000000000 --- a/gcc/testsuite/gcc.dg/pr48022-2.c +++ /dev/null @@ -1,11 +0,0 @@ -/* PR tree-optimization/48022 */ -/* { dg-do compile } */ -/* { dg-options "-O2 -Wstrict-overflow" } */ - -#include <string.h> - -int -foo (const char *x) -{ - return strcmp (x, "/"); -} diff --git a/gcc/testsuite/gcc.dg/pr49705.c b/gcc/testsuite/gcc.dg/pr49705.c deleted file mode 100644 index 0c326ae3f71f..000000000000 --- a/gcc/testsuite/gcc.dg/pr49705.c +++ /dev/null @@ -1,19 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -Wstrict-overflow" } */ - -struct glyph -{ - long foo, bar, baz; -}; - -extern int fatal (char const *, int, int); - -int -check_image_width (int width, int height) -{ - if ((((((0 * (0 * 2 + width) - 1) < 0) ? - (~ (0 * (0 * 2 + width) + 0) == -1) - ((((0 * (0 * 2 + width) + 1) << (sizeof ((0 * 2 + width) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * 2 + width) + 0))) < 0 ? (2 < 0 ? width < ((((0 * (0 * 2 + width) - 1) < 0) ? - (~ (0 * (0 * 2 + width) + 0) == -1) - ((((0 * (0 * 2 + width) + 1) << (sizeof ((0 * 2 + width) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * 2 + width) + 0))) - 2 : ((((0 * (0 * 2 + width) - 1) < 0) ? ((((0 * (0 * 2 + width) + 1) << (sizeof ((0 * 2 + width) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * 2 + width) - 1))) - 2 < width) : width < 0 ? 2 <= width + 2 : 2 < 0 ? width <= width + 2 : width + 2 < 2) - || ((((((0 * (0 * height + (width + 2)) - 1) < 0) ? - (~ (0 * (0 * height + (width + 2)) + 0) == -1) - ((((0 * (0 * height + (width + 2)) + 1) << (sizeof ((0 * height + (width + 2)) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * height + (width + 2)) + 0))) == 0 && (((width + 2) < 0 && 0 < height) || (height < 0 && 0 < (width + 2)))) || (height < 0 ? ((width + 2) < 0 ? (width + 2) < ((((0 * (0 * height + (width + 2)) - 1) < 0) ? ((((0 * (0 * height + (width + 2)) + 1) << (sizeof ((0 * height + (width + 2)) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * height + (width + 2)) - 1))) / height : height == -1 ? 0 : ((((0 * (0 * height + (width + 2)) - 1) < 0) ? - (~ (0 * (0 * height + (width + 2)) + 0) == -1) - ((((0 * (0 * height + (width + 2)) + 1) << (sizeof ((0 * height + (width + 2)) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * height + (width + 2)) + 0))) / height < (width + 2)) : height == 0 ? 0 : ((width + 2) < 0 ? (width + 2) < ((((0 * (0 * height + (width + 2)) - 1) < 0) ? - (~ (0 * (0 * height + (width + 2)) + 0) == -1) - ((((0 * (0 * height + (width + 2)) + 1) << (sizeof ((0 * height + (width + 2)) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * height + (width + 2)) + 0))) / height : ((((0 * (0 * height + (width + 2)) - 1) < 0) ? ((((0 * (0 * height + (width + 2)) + 1) << (sizeof ((0 * height + (width + 2)) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * height + (width + 2)) - 1))) / height < (width + 2)))) - || ((9223372036854775807L < 18446744073709551615UL ? 9223372036854775807L : 18446744073709551615UL) / sizeof (struct glyph) - < (width + 2) * height)) - fatal ("screen size %dx%d too big", width, height); -} diff --git a/gcc/testsuite/gcc.dg/pr52904.c b/gcc/testsuite/gcc.dg/pr52904.c deleted file mode 100644 index 0b8910fbe180..000000000000 --- a/gcc/testsuite/gcc.dg/pr52904.c +++ /dev/null @@ -1,20 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-Wstrict-overflow -O2" } */ -extern int foo (int); - -int -wait_reading_process_output (void) -{ - int nfds = 0; - int channel; - - for (channel = 0; channel < 1024; ++channel) - { - if (foo (channel)) - nfds++; - } - - if (nfds < 0) /* { dg-bogus "assuming signed overflow does not occur" "" } */ - return 1; - return 0; -} diff --git a/gcc/testsuite/gcc.dg/pr81592.c b/gcc/testsuite/gcc.dg/pr81592.c index a37703af4970..3abe96a47ec4 100644 --- a/gcc/testsuite/gcc.dg/pr81592.c +++ b/gcc/testsuite/gcc.dg/pr81592.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -Wall -fno-strict-overflow -Wstrict-overflow=2 -fsanitize=signed-integer-overflow" } */ +/* { dg-options "-O2 -Wall -fsanitize=signed-integer-overflow" } */ #include <stdio.h> diff --git a/gcc/testsuite/gcc.dg/pragma-diag-3.c b/gcc/testsuite/gcc.dg/pragma-diag-3.c index b6ee60f16770..e01bab83d777 100644 --- a/gcc/testsuite/gcc.dg/pragma-diag-3.c +++ b/gcc/testsuite/gcc.dg/pragma-diag-3.c @@ -1,23 +1,8 @@ /* { dg-do compile } */ -/* { dg-options "-Wswitch-enum -Wsign-compare -fstrict-overflow -Wstrict-overflow -Werror -Wno-error=switch-enum" } */ -/* PR c/66098 - #pragma diagnostic 'ignored' not fully undone by pop for strict-overflow - PR c/66711 - GCC does not correctly restore diagnostic state after pragma GCC diagnostic pop with -Werror -*/ +/* { dg-options "-Wswitch-enum -Wsign-compare -fstrict-overflow -Werror -Wno-error=switch-enum" } */ /* { dg-message "warnings being treated as errors" "" {target "*-*-*"} 0 } */ -void testing2() { -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wstrict-overflow" - int j = 4; - j + 4 < j; -#pragma GCC diagnostic pop -} - -void testing3() { - int k = 4; - k + 4 < k; /* { dg-error "overflow" "" { xfail *-*-* } } */ -} - +/* PR c/66711 - GCC does not correctly restore diagnostic state after pragma GCC diagnostic pop with -Werror */ int bar() { unsigned x = 0;
