...some paths trough clang::Expr::isIntegerConstantExpr (esp. if
non-CPlusPlus11) assert the assumption that the given expr is not
value-dependent, so it appears to be a prereq
Change-Id: Ibc5fe472ea3f91b31c8cb7f06c4b7c7f4d6831a3
...and subsumes not only the use of __builtin_expect in assert, but also the use
of __builtin_constant_p (nested) in htonl on Mac OS X.
Change-Id: I62ab6c71c42948c4ec1e2f1e1d23223cbb13416b
...as found in Mac OS X' assert macro definition,
__builtin_expect(!(e), 0) ? ... : ...
with type
long __builtin_expect(long, long)
The code in literaltoboolconversion.cxx is needed for
assert(false);
Change-Id: I42f87482c56986af74b2ec849db9852f74c7c938
...which warns about apparent errors like
n == KIND_FOO || KIND_BAR
that should have read
n == KIND_FOO || n == KIND_BAR
It also warns about trivial (mis-)uses of 0/1 and sal_False/True like
while (1) { ... }
instead of
while (true) { ... }
which it can automatically rewrite.
It does not warn if the relevant code is inside a macro in a .h (i.e., C)
include file, nor when a string literal is used in the assert macro like
assert(!"this cannot happen");
Change-Id: If8c305a25e5da15e78f6139b5b0c0e868f06d4f3