Re: [PATCH] Fix some sparse warnings
- From
Philip Oakley <philipoakley@iee.org>
- Date
- Jul 16, 2013, 20:53 UTC
- Message-ID
- <6BDA2E3E7318418BBB2C19B475B2B118@PhilipOakley>
- In-Reply-To
- <20130716062122.GA4964@sigill.intra.peff.net>
From: "Jeff King" <peff@peff.net> Sent: Tuesday, July 16, 2013 7:21 AM
Show 31 quoted lines
> On Tue, Jul 16, 2013 at 07:57:20AM +0200, Johannes Sixt wrote:
>
>> Am 7/15/2013 19:31, schrieb Ramsay Jones:
>> > Sparse issues three "Using plain integer as NULL pointer" warnings.
>> > Each warning relates to the use of an '{0}' initialiser expression
>> > in the declaration of an 'struct object_info'.
>>
>> I question the value of this warning. Initialization with '= {0}' is
>> a
>> well-established idiom, and sparse should know about it. Also, plain
>> 0
>> *is* a null pointer constant.
>
> I agree with you. It's not a bug, and I think sparse is being overly
> picky here; it is missing the forest for the trees in interpreting the
> idiom.
>
> Still, it may be worth tweaking in the name of eliminating compiler
> noise, since it does not cost us very much to do so (and I believe we
> have done so in the past, too).
>
> We could also ask people with sparse to turn off the "use NULL instead
> of 0" warning, but I think it _is_ a useful warning elsewhere (even
> though it is never a bug, it violates our style guidelines and may be
> an
> indication of a bug). It would be nice if sparse learned to ignore the
> warning in this particular idiom, but I am not going to hold my breath
> for that.
>
> -Peff
> --On the subject of warnings and null pointers, yesterday's Code Project news linked to a blog on the problems of unexpected optimization bugs, such as dereferencing a null pointer. "Finding Undefined Behavior Bugs by Finding Dead Code" http://blog.regehr.org/archives/970 which links to the draft of an interesting paper [http://pdos.csail.mit.edu/~xi/papers/stack-sosp13.pdf]
Does anyone run the "new static checker called 'Stack' that precisely identifies unstable code"? [though the paper's conclusion says 'All Stack source code will be publicly available.' which suggests it's not yet available]
Or use the ‘-fno-delete-null-pointer-checks’ referred to in the blog comments (see also index : kernel/git/torvalds/linux.git "Add '-fno-delete-null-pointer-checks' to gcc CFLAGS" https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a3ca86aea507904148870946d599e07a340b39bf
You're probably already aware of these aspects but I thought it worth mentioning for the wider readership.
regards
Philip