Date: Sun, 13 Jul 2003 12:23:52 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: jilles@stack.nl Cc: freebsd-current@freebsd.org Subject: Re: GCC 3.3.1, new warnings with <limits> Message-ID: <20030713.122352.22176834.imp@bsdimp.com> In-Reply-To: <20030713152154.GA96653@stack.nl> References: <20030713000559.28c18be6.kabaev@mail.ru> <20030713044331.GA89785@crodrigues.org> <20030713152154.GA96653@stack.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
: > 134 #define __glibcpp_signed(T) ((T)(-1) < 0) : #define __glibcpp_signed(T) (!((T)(-1) > 0)) Why not the simpler: #define __glibcpp_signed(T) ((T)(-1) <= 0) that way we have an overlap on the range of the two types, so we won't get a warning. We know for a fact that -1 != 0 for all known machine types (all machines are two's complement, or are required to behave as if they are two's complement, per the standard). (unsigned int) -1 == 0xffffffff (assuming 32-bit int). even on a one's complement's machine, without the standard conversion, the 'type punning' conversion of -1 would yield 0xfffffffe, which is still > 0. Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030713.122352.22176834.imp>