[Bug libgcc/70800] libgcc/config/libbid/bid_binarydecimal.c: suspicious comparison ?
dcb314 at hotmail dot com
gcc-bugzilla@gcc.gnu.org
Sun Jan 22 22:41:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70800
--- Comment #1 from David Binderman <dcb314 at hotmail dot com> ---
Given the following source code
extern void g(int n);
void f( int n)
{
if ((n & 0x30) == 1)
g( n);
}
Current trunk gcc can't find much wrong:
$ ~/gcc/results/bin/gcc -c -g -O2 -Wall -Wextra -Wtype-limits jan22a.cc
$
If it could, then these four known bugs in the gcc source code could be found
$ grep "Expression .* is always" ~/gcc/cppcheck.20170120.out
[trunk/libgcc/config/libbid/bid_binarydecimal.c:143933]: (style) Expression '(X
& 0xffff) > 0xf423f' is always false.
[trunk/libgcc/config/libbid/bid_binarydecimal.c:144327]: (style) Expression '(X
& 0xffff) > 0xf423f' is always false.
[trunk/libgcc/config/libbid/bid_binarydecimal.c:144723]: (style) Expression '(X
& 0xffff) > 0xf423f' is always false.
[trunk/libgcc/config/libbid/bid_binarydecimal.c:145133]: (style) Expression '(X
& 0xffff) > 0xf423f' is always false.
$
and indeed, six bugs in the linux kernel could also be found:
$ grep "Expression .* is always" ~/linuxKernel/cppcheck.410-rc4.out
[linux-4.10-rc4/arch/mips/include/asm/netlogic/xlr/fmn.h:304]: (style)
Expression '(X & 0x2) == 0x1' is always false.
[linux-4.10-rc4/drivers/block/sx8.c:1077]: (style) Expression '(X & 0x1f) <
0x20' is always true.
[linux-4.10-rc4/drivers/dma/txx9dmac.c:743]: (style) Expression '(X & 0xff) <=
0xff' is always true.
[linux-4.10-rc4/drivers/dma/txx9dmac.c:748]: (style) Expression '(X & 0x7f) <=
0x7f' is always true.
[linux-4.10-rc4/drivers/staging/rts5208/sd.c:4129]: (style) Expression '(X &
0x1e) != 0x3' is always true.
[linux-4.10-rc4/samples/bpf/sockex3_kern.c:268]: (style) Expression '(X & 0xf0)
== 0x4' is always false.
$
More information about the Gcc-bugs
mailing list