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. Of course, maybe we need to make -Wno-shift-negative-value be conditional on the compiler supporting it in the first place? I really would love to finally move forward on this, considering that it's been brewing for many many years. I think the loop iterators are the biggest user-visible thing, but there might be others. And some googling seems to show that the reason for -Wshift-negative-value is that with C99 the semantics changed for targets that weren't two's complement. We *really* don't care. Of course, the C standard being the bunch of incompetents they are, they in the process apparently made left-shifts undefined (rather than implementation-defined). Christ, they keep on making the same mistakes over and over. What was the definition of insanity again? Linus