Thread (3 messages) 3 messages, 3 authors, 2015-09-22

Re: [PATCH 00/38] Fixes related to incorrect usage of unsigned types

From: David Howells <dhowells@redhat.com>
Date: 2015-09-21 13:42:40
Also in: linux-api, linux-arm-kernel, linux-clk, linux-crypto, linux-input, linux-leds, linux-media, linux-mips, linux-mm, linux-omap, linux-rdma, linux-serial, linux-sh, linux-wireless, lkml

Andrzej Hajda [off-list ref] wrote:
Semantic patch finds comparisons of types:
    unsigned < 0
    unsigned >= 0
The former is always false, the latter is always true.
Such comparisons are useless, so theoretically they could be
safely removed, but their presence quite often indicates bugs.
Or someone has left them in because they don't matter and there's the
possibility that the type being tested might be or become signed under some
circumstances.  If the comparison is useless, I'd expect the compiler to just
discard it - for such cases your patch is pointless.

If I have, for example:

	unsigned x;

	if (x = 0 || x > 27)
		give_a_range_error();

I will write this as:

	unsigned x;

	if (x <= 0 || x > 27)
		give_a_range_error();

because it that gives a way to handle x being changed to signed at some point
in the future for no cost.  In which case, your changing the <= to an =
"because the < part of the case is useless" is arguably wrong.

David
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help