> On Feb 5, 2024, at 4:31 AM, Magnus Ihse Bursie <i...@openjdk.org> wrote:
> 
> On Mon, 5 Feb 2024 03:21:35 GMT, Kim Barrett <kbarr...@openjdk.org> wrote:
> 
>>> Inspired by (the later backed-out) 
>>> [JDK-8296115](https://bugs.openjdk.org/browse/JDK-8296115), I propose to 
>>> enable `-Wpedantic` for clang. This has already found some irregularities 
>>> in the code, like mistakenly using `#import` instead of `#include`. In this 
>>> patch, I disable warnings for these individual buggy or badly written 
>>> files, but I intend to post follow-up issues on the respective teams to 
>>> have them properly fixed.
>>> 
>>> Unfortunately, it is not possible to enable `-Wpedantic` on gcc, since 
>>> individual warnings in `-Wpedantic` cannot be disabled. This means that 
>>> code like this:
>>> 
>>> 
>>> #define DEBUG_ONLY(code) code;
>>> 
>>> DEBUG_ONLY(foo());
>>> 
>>> 
>>> will result in a `; ;`. This breaks the C standard, but is benign, and we 
>>> use it all over the place. On clang, we can ignore this by 
>>> `-Wno-extra-semi`, but this is not available on gcc.
>> 
>>> Inspired by (the later backed-out) 
>>> [JDK-8296115](https://bugs.openjdk.org/browse/JDK-8296115), I propose to 
>>> enable `-Wpedantic` for clang. This has already found some irregularities 
>>> in the code, like mistakenly using `#import` instead of `#include`. In this 
>>> patch, I disable warnings for these individual buggy or badly written 
>>> files, but I intend to post follow-up issues on the respective teams to 
>>> have them properly fixed.
>> 
>> Rather than first turning on pedantic warnings and then (maybe) going back 
>> and perhaps fixing things, I'd really prefer
>> things be done in the other order.  (That's how I handled the recent 
>> `-Wparentheses` changes, for example.)
> 
> @kimbarrett
>> Rather than first turning on pedantic warnings and then (maybe) going back 
>> and perhaps fixing things, I'd really prefer
> things be done in the other order.
> 
> I hear what you are saying, but I respectfully disagree. If we do things in 
> the order you suggest, the global flag cannot be turned on until all 
> component teams have fixed their source code. That essentially makes the most 
> overworked group putting an effective veto to this change (when your workload 
> is too high, fixing warnings is not on top of your priority.) In contrast, if 
> the global warning can be turned on now, it will have a positive effect on 
> all new and modified code from now on. And the teams can work on their 
> individual warnings, and remove them in their own time.

Without knowing what the actual warnings are that are being triggered and then
suppressed, I can't even begin to evaluate this change. Not all warnings are
good and useful. Sometimes the avoidance effort is really not worth the
benefit. Sometimes there is a future change to the Standard that is already
supported as an extension. Sometimes there is a widely supported extension
that has perhaps just not yet made it into the Standard. Sometimes
platform-specific code uses platform-specific extensions.  And so on.

Enabling -Wpedantic requires an evaluation of the costs and benefits and a
decision that there's a good tradeoff there.  So far, this PR doesn't do that.
Fixing the warnings first, or at least having the relevant bug reports, would
provide that information.

> This is the same method I used for turning on -Wall and -Wextra. Some teams 
> are very eager to fix warnings, and others still have almost all their 
> "DISABLED_WARNINGS" left several years later. (I will not mention any names; 
> you both know who you are ;-)). If I had followed the route you suggest, we 
> would not have -Wall -Wextra on all source code (sans a few, marked files) 
> now.

For -Wparentheses I took the opposite approach and fixed all occurrences
(finding and fixing a couple of bugs in the process) before enabling them.
We've also been approaching -Wconversion from that direction. I think the
enabled but then suppressed warnings has led to an out-of-sight out-of-mind
situation for the suppressed warnings.

I was not particularly happy with adding -Wextra, for example, because I think
some of the warnings it triggers are questionable. You and I went through a
very similar discussion for enabling that option for HotSpot. Right now I
don't even have the information needed for such a discussion.

Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to