Gentoo Archives: gentoo-dev

From: Richard Yao <ryao@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Changing policy about -Werror
Date: Fri, 14 Sep 2018 00:44:42
Message-Id: 3A8A39E8-91DF-40B2-8958-F046FA58622B@gentoo.org
In Reply to: Re: [gentoo-dev] Changing policy about -Werror by Matt Turner
> On Sep 13, 2018, at 7:21 PM, Matt Turner <mattst88@g.o> wrote: > > On Thu, Sep 13, 2018 at 4:13 PM Richard Yao <ryao@g.o> wrote: >>> On Sep 13, 2018, at 12:03 PM, Fabian Groffen <grobian@g.o> wrote: >>> >>>> On 13-09-2018 07:36:09 -0400, Richard Yao wrote: >>>> >>>> >>>>>> On Sep 12, 2018, at 6:55 PM, Thomas Deutschmann <whissi@g.o> wrote: >>>>>> >>>>>> On 2018-09-12 16:50, Rich Freeman wrote: >>>>>> There is also the case where we want these warnings to block >>>>>> installation, because the risk of there being a problem is too great. >>>>> >>>>> I really disagree with that. So many devs have already said multiple >>>>> times in this thread that "-Werror" is only turning existing warnings >>>>> into fatal errors but "-Werror" itself doesn't add any new checks and >>>>> more often requires "-O3" to be useful. >>>> The way that compilers work is that the warnings are generated in the front end while the optimization level affects the backend. That means that -O3 has no effect on the code that does error generation. This remark about -O3 being needed to make -Werror useful is just plain wrong. >>> >>> Huh? -O3 enables more checks, which can generate more warnings. >> >> What checks are those? -O3 affects backend optimization while warnings are generated by the front end. Once the immediate representation is generated, there are no other warnings aside from those from the linker. > > https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html > > Search for "depend on" > > -> [...] estimated based on heuristics that depend on thelevel > argument and on optimization > > -> Because these warnings depend on optimization [...] > > Yes, warnings are dependent on optimization level.
There are three such options. The first two are for format statements:
> “When the exact number of bytes written by a format directive cannot be determined at compile-time it is estimated based on heuristics that depend on the level argument and on optimization. While enabling optimization will in most cases improve the accuracy of the warning, it may also result in false positives. “
My read of this is that the warning occurs regardless of optimization level, but it could somehow be improved by optimization. As for the last, it is for uninitialized variable reads. However, I think you are misinterpreting the claim. The way that optimization level could affect warning generation would be if the warning generation came after optimization passes that could hide reads. That means that -O3 would prevent the warning. This is a really odd design decision by the GCC developers. With other compilers, the separation between front end and backend is strong enough that you will never have this sort of thing. It does not seem necessary to me either. :/

Replies

Subject Author
Re: [gentoo-dev] Changing policy about -Werror Georg Rudoy <0xd34df00d@×××××.com>
Re: [gentoo-dev] Changing policy about -Werror Matt Turner <mattst88@g.o>