Re: [PATCH -mm] sys_semctl gcc 4.1 warning fix

Al Viro
2006-05-11T21:14:17Z

On Thu, May 11, 2006 at 10:40:33PM +0200, Adrian Bunk wrote:
> We could turn of this kind of warnings that generate these kind of false
> positives globally with -Wno-uninitialized until a future gcc version
> might be better at avoiding false positives.
>
> But there's one problem, this turns off two kinds of warnings:
> - 'foo' may be used uninitialized in this function
> - 'foo' is used uninitialized in this function
>
> The first kind of warnings is the one generating the false positives
> while the second kind are warnings we do not want to lose, but AFAIK
> there's no way to only turn off the first kind.
>
> Perhaps asking the gcc developers for separate options for these two
> kinds of warnings in gcc 4.2 and then turning off the first kind is
> the way to go?

Folks, let's look at it that way:
* warnings are tools to locate broken places in the tree.
* we have two signals ("is unused" and "may be unused"), say
A(location, verision) and B(location, version).
* A has fairly high S/N ratio.
* B has very large noise component, but it's only weakly dependent
on the verision.

The question is how to get useful information out of those.
* solution 1: introduce C(location, version) and filter A and B
with it, to kill noise in B.
* solution 2: ignore B, either by gcc modification or simply filtering
it with grep.
* solution 3: subtract the signals for consequent versions.

IMO it's obvious that combining outputs of (2) and (3) gives the best S/N.
The reason why (1) is bad is that it kills high-S/N channel in the areas
with high noise on low-S/N channel *and* that filtered-out areas will
remain filtered out in the next versions. IOW, it's a clear loss.