From: Linus Torvalds <torvalds@linux-foundation.org>
To: Sergei Organov <osv@javad.com>
Cc: "Pekka Enberg" <penberg@cs.helsinki.fi>,
"J.A. MagallÃÃón" <jamagallon@ono.com>,
"Jan Engelhardt" <jengelh@linux01.gwdg.de>,
"Jeff Garzik" <jeff@garzik.org>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
"Andrew Morton" <akpm@linux-foundation.org>
Subject: Re: somebody dropped a (warning) bomb
Date: Tue, 13 Feb 2007 15:21:04 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.64.0702131513050.3604@woody.linux-foundation.org> (raw)
In-Reply-To: <87fy99n6mf.fsf@javad.com>
On Tue, 13 Feb 2007, Sergei Organov wrote:
>
> Sorry, what do you do with "variable 'xxx' might be used uninitialized"
> warning when it's false? Turn it off? Annotate the source? Assign fake
> initialization value? Change the compiler so that it does "the effort"
> for you? Never encountered false positive from this warning?
The thing is, that warning is at least easy to shut up.
You just add a fake initialization. There isn't any real downside.
In contrast, to shut up the idiotic pointer-sign warning, you have to add
a cast.
Now, some people seem to think that adding casts is a way of life, and
think that C programs always have a lot of casts. That's NOT TRUE. It's
actually possible to avoid casts, and good C practice will do that to
quite a high degree, because casts in C are *dangerous*.
A language that doesn't allow arbitrary type-casting is a horrible
language (because it doesn't allow you to "get out" of the language type
system), and typecasts in C are really important. But they are an
important feature that should be used with caution, and as little as
possible, because they (by design, of course) break the type rules.
Now, since the _only_ reason for the -Wpointer-sign warning in the first
place is to warn about breaking type rules, if the way to shut it up is to
break them EVEN MORE, then the warnign is obviously totally broken. IT
CAUSES PEOPLE TO WRITE WORSE CODE! Which was against the whole point of
having the warning in the first place.
This is why certain warnings are fine. For example, the warning about
if (a=b)
..
is obviously warning about totally valid C code, but it's _still_ a fine
warning, because it's actually very easy to make that warning go away AND
IMPROVE THE CODE at the same time. Even if you actually meant to write the
assignment, you can write it as
if ((a = b) != 0)
..
or
a = b;
if (a)
..
both of which are actually more readable.
But if you have
unsigned char *mystring;
len = strlen(mystring);
then please tell me how to fix that warning without making the code
*worse* from a type-safety standpoint? You CANNOT. You'd have to cast it
explicitly (or assing it through a "void *" variable), both of which
actually MAKE THE TYPE-CHECKING PROBLEM WORSE!
See? The warning made no sense to begin with, and it warns about something
where the alternatives are worse than what it warned about.
Ergo. It's a crap warning.
Linus
next prev parent reply other threads:[~2007-02-13 23:21 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-08 15:00 somebody dropped a (warning) bomb Jeff Garzik
2007-02-08 16:33 ` Linus Torvalds
2007-02-08 18:42 ` Jan Engelhardt
2007-02-08 19:53 ` Linus Torvalds
2007-02-08 21:10 ` Jan Engelhardt
2007-02-08 21:37 ` Linus Torvalds
2007-02-08 23:12 ` David Rientjes
2007-02-08 23:37 ` Linus Torvalds
2007-02-09 0:24 ` David Rientjes
2007-02-09 0:42 ` Linus Torvalds
2007-02-09 0:59 ` Linus Torvalds
2007-02-09 0:59 ` David Rientjes
2007-02-09 1:11 ` Linus Torvalds
2007-02-09 1:18 ` David Rientjes
2007-02-09 15:38 ` Linus Torvalds
2007-02-09 3:27 ` D. Hazelton
2007-02-09 19:54 ` Pete Zaitcev
2007-02-09 12:34 ` Jan Engelhardt
2007-02-09 13:16 ` linux-os (Dick Johnson)
2007-02-09 17:45 ` Jan Engelhardt
2007-02-09 20:29 ` linux-os (Dick Johnson)
2007-02-09 22:05 ` Jan Engelhardt
2007-02-09 22:58 ` Martin Mares
2007-02-12 18:50 ` linux-os (Dick Johnson)
2007-02-13 15:14 ` Dick Streefland
2007-02-08 21:13 ` J.A. Magallón
2007-02-08 21:42 ` Linus Torvalds
2007-02-08 22:03 ` Linus Torvalds
2007-02-08 22:19 ` Willy Tarreau
2007-02-09 0:03 ` J.A. Magallón
2007-02-09 0:22 ` Linus Torvalds
2007-02-09 12:38 ` Sergei Organov
2007-02-09 15:58 ` Linus Torvalds
2007-02-12 11:12 ` Sergei Organov
2007-02-12 16:26 ` Linus Torvalds
2007-02-13 18:06 ` Sergei Organov
2007-02-13 18:26 ` Pekka Enberg
2007-02-13 19:14 ` Sergei Organov
2007-02-13 19:43 ` Pekka Enberg
2007-02-13 20:29 ` Sergei Organov
2007-02-13 21:31 ` Jeff Garzik
2007-02-13 23:21 ` Linus Torvalds [this message]
2007-02-15 13:20 ` Sergei Organov
2007-02-15 15:57 ` Linus Torvalds
2007-02-15 18:53 ` Sergei Organov
2007-02-15 19:02 ` Linus Torvalds
2007-02-15 20:23 ` me, not " Oleg Verych
2007-02-16 4:26 ` Rene Herman
2007-02-19 11:58 ` Sergei Organov
2007-02-19 13:58 ` Sergei Organov
2007-02-15 22:32 ` Lennart Sorensen
2007-02-13 19:25 ` Linus Torvalds
2007-02-13 19:59 ` Sergei Organov
2007-02-13 20:24 ` Linus Torvalds
2007-02-15 15:15 ` Sergei Organov
2007-02-13 21:13 ` Rob Landley
2007-02-13 22:21 ` Olivier Galibert
2007-02-14 12:52 ` Sergei Organov
2007-02-15 20:06 ` Sergei Organov
2007-02-09 15:10 ` Sergei Organov
2007-02-08 16:35 ` Kumar Gala
[not found] <7Mj5f-3oz-21@gated-at.bofh.it>
[not found] ` <7MktH-5EW-35@gated-at.bofh.it>
[not found] ` <7Mmvy-vj-17@gated-at.bofh.it>
[not found] ` <7MnBC-2fk-13@gated-at.bofh.it>
[not found] ` <7MoQx-4p8-11@gated-at.bofh.it>
[not found] ` <7MpjE-50z-7@gated-at.bofh.it>
[not found] ` <7MpCS-5Fe-9@gated-at.bofh.it>
[not found] ` <7MDd7-17w-1@gated-at.bofh.it>
[not found] ` <7MGkB-62k-31@gated-at.bofh.it>
[not found] ` <7NHoe-2Mb-37@gated-at.bofh.it>
[not found] ` <7NMe9-1ZN-7@gated-at.bofh.it>
[not found] ` <7Oagl-6bO-1@gated-at.bofh.it>
[not found] ` <7ObvW-89N-23@gated-at.bofh.it>
[not found] ` <7Oc8t-NS-1@gated-at.bofh.it>
2007-02-15 20:08 ` Bodo Eggert
2007-02-16 11:21 ` Sergei Organov
2007-02-16 14:51 ` Bodo Eggert
2007-02-19 11:56 ` Sergei Organov
2007-02-16 12:46 ` Sergei Organov
2007-02-16 17:40 ` Bodo Eggert
2007-02-19 12:17 ` Sergei Organov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.64.0702131513050.3604@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=akpm@linux-foundation.org \
--cc=jamagallon@ono.com \
--cc=jeff@garzik.org \
--cc=jengelh@linux01.gwdg.de \
--cc=linux-kernel@vger.kernel.org \
--cc=osv@javad.com \
--cc=penberg@cs.helsinki.fi \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.