https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104711
Bug ID: 104711 Summary: Unnecessary -Wshift-negative-value warning Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: arnd at linaro dot org Target Milestone: --- During the discussion of increasing the C standard version of the Linux kernel fro m gnu89 to gnu99 or higher, it turned out that gcc warns about code that shifts negative signed integers [2]. This is undefined behavior in standard C99, but defined as a GNU extension in GCC.[3]. This warning is enabled by default at the -Wextra level for C99/GNU99 or higher, but disabled for C89/GNU89. In clang, the warning is enabled by default at the -Wall level but in turn disabled when building with -fwrapv or -fno-strict-overflow (as the Linux kernel does). It would be nice if future compiler releases could either demote the warning from being enabled at -Wextra to -Wpedantic, or follow clang and disable it when used with -fwrapv/-fno-strict-overflow. [1] https://lore.kernel.org/lkml/20220227010956.gw...@gate.crashing.org/ [2] https://www.godbolt.org/z/s1TzxrGz4 [3] https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc/Integers-implementation.html