Messages in this thread | | | From | Linus Torvalds <> | Date | Wed, 23 Feb 2022 12:43:10 -0800 | Subject | Re: [RFC PATCH 03/13] usb: remove the usage of the list iterator after the loop |
| |
On Wed, Feb 23, 2022 at 12:25 PM Arnd Bergmann <arnd@arndb.de> 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
| |