On Wed, Feb 23, 2022 at 9:43 PM Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > On Wed, Feb 23, 2022 at 12:25 PM Arnd Bergmann <arnd@xxxxxxxx> wrote: > > > > I looked at the gcc documentation for this flag, and it tells me that > > it's default-enabled for std=c99 or higher. Turning it on for --std=gnu89 > > shows the same warning, so at least it doesn't sound like the actual > > behavior changed, only the warning output. clang does not warn > > for this code at all, regardless of the --std= flag. > > Ok, so we should be able to basically convert '--std=gnu89' into > '--std=gnu11 -Wno-shift-negative-value' with no expected change of > behavior. Yes, I think that is correct. > Of course, maybe we need to make -Wno-shift-negative-value be > conditional on the compiler supporting it in the first place? I think they all do. I discussed this with Nathan Chancellor on IRC, to see what clang does, and he points out that the warning was made conditional on -fwrapv there a while ago: https://github.com/llvm/llvm-project/commit/59802321785b4b9fc31b10456c62ba3a06d3a631 So the normal behavior on clang is to always warn about it, but since we explicitly ask for sane signed integer behavior, it doesn't warn for the kernel. Arnd