On Sun, Mar 23, 2014 at 12:17:40AM +, David A. Holland wrote:
Module Name: src
Committed By: dholland
Date: Sun Mar 23 00:17:40 UTC 2014
Modified Files:
src/games: Makefile.inc
Log Message:
Add note cautioning against bothering with WARNS=6 until gcc improves
(or -Wconversion is removed from WARNS=6) as it produces loads of false
positives. The most entertaining of these that I've seen this afternoon:
games/hack/hack.apply.c:143:22: error: conversion to 'unsigned char:1' from
'int' may alter its value [-Werror=conversion]
flags.move = multi = 0;
I agree.
If the compiler was doing some simple checks on the domain of the
value the it might be sensible, but otherwise is generates a lot
of false positives fo very little gain.
I dislike adding casts between integer types just to appease compiler
(and lint) warnings. They make the code unreadable and can hide
much more serious errors.
I'll live with -Wsign-compare even though that is sometimes painful.
Even then the compiler can 'know' that the signed variable never
contains a negative value - so need not emit a warning.
For instance with:
for (int i = 0; i sizeof foo; i++)
it can't matter that the comparison is unsigned because 'i' can be
assumed to be non-negative (even if 'sizeof foo' is greater than MAXINT).
David
--
David Laight: da...@l8s.co.uk