[cfe-commits] r146482 - /cfe/trunk/lib/AST/ASTContext.cpp

Chris Lattner clattner at apple.com
Tue Dec 13 10:56:45 PST 2011


On Dec 13, 2011, at 10:47 AM, Marshall Clow wrote:

> On Dec 13, 2011, at 10:34 AM, Chris Lattner wrote:
> 
>> Honest question: why would that be better?
> 
> Because using
> 	(uint64_t)(-1)
> makes two assumptions, both of which are almost always true:
> 	* That an "all ones" representation is the max value for uint64_t
> and * That the conversion from (int) -1 ==> uint64_t produces the bit patten that you think you want.
> 
> What the code wants here is not really an "all ones" pattern, but rather the max value.
> And the standard library has a defined, portable way of getting the max value.
> 
> On most machines, it will be 0xFFFFFFFFFFFFFFFF (i.e, all ones) and the code that I suggest replacing will work.

LLVM doesn't care about non-two's complement machines.  On any sane system, your fears are unfounded.  The value being sought is *always* 18446744073709551615.

-Chris




More information about the cfe-commits mailing list