https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119004
Bug ID: 119004 Summary: Inconsistent set of flags to trigger -Wstrict-overflow diagnostics Product: gcc Version: 14.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: alx at kernel dot org Target Milestone: --- -Wstrict-overflow somehow is not enough to trigger its own diagnostics. I seem to need -Wall too. :| alx@debian:~/tmp$ cat foo.c #include <limits.h> int dont_call_me_thrice(void) { static int i = 0; if (++i >= 3) return -1; return 0; } alx@debian:~/tmp$ gcc -Wstrict-overflow -S foo.c alx@debian:~/tmp$ gcc -Wstrict-overflow=0 -S foo.c alx@debian:~/tmp$ gcc -Wstrict-overflow=1 -S foo.c alx@debian:~/tmp$ gcc -Wstrict-overflow=2 -S foo.c alx@debian:~/tmp$ gcc -Wstrict-overflow=3 -S foo.c alx@debian:~/tmp$ gcc -Wstrict-overflow=4 -S foo.c alx@debian:~/tmp$ gcc -Wstrict-overflow=5 -S foo.c alx@debian:~/tmp$ gcc -Wstrict-overflow -Wstrict-overflow=5 -S foo.c alx@debian:~/tmp$ gcc -Wall -Wstrict-overflow=5 -S foo.c foo.c: In function ‘dont_call_me_thrice’: foo.c:11:1: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow] 11 | } | ^ alx@debian:~/tmp$ gcc -Wall -S foo.c alx@debian:~/tmp$ (Don't mind that this is a false positive of -Wstrict-overflow; I'll report that separately.)