Hi! This patch makes -Wint-in-bool-context warn on suspicious integer left shifts, when the integer is signed, which is most likely some kind of programming error, for instance using "<<" instead of "<". The warning is motivated by the fact, that an overflow on integer shift left is undefined behavior, even if gcc won't optimize the shift based on the undefined behavior. So in absence of undefined behavior the boolean result does not depend on the shift value, thus the whole shifting is pointless. Of course the warning happened to find one bug already. That is in cp/parser.c at cp_parser_condition, where we have this: bool flags = LOOKUP_ONLYCONVERTING; BUT (cp-tree.h): #define LOOKUP_ONLYCONVERTING (1 << 2) So "flags" is actually set to true, which is LOOKUP_PROTECT instead. Although I tried hard to find a test case where this changes something, I was not able to construct one. Bootstrapped and reg-tested on x86_64-pc-linux-gnu. Is it OK for trunk? Thanks Bernd.