As noted by Kenny and Joern. Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.
Richard. 2013-08-30 Richard Biener <rguent...@suse.de> * fold-const.c (fold_single_bit_test): Fix overflow test. Index: gcc/fold-const.c =================================================================== --- gcc/fold-const.c (revision 202100) +++ gcc/fold-const.c (working copy) @@ -6634,10 +6634,10 @@ fold_single_bit_test (location_t loc, en not overflow, adjust BITNUM and INNER. */ if (TREE_CODE (inner) == RSHIFT_EXPR && TREE_CODE (TREE_OPERAND (inner, 1)) == INTEGER_CST - && TREE_INT_CST_HIGH (TREE_OPERAND (inner, 1)) == 0 + && host_integerp (TREE_OPERAND (inner, 1), 1) && bitnum < TYPE_PRECISION (type) - && 0 > compare_tree_int (TREE_OPERAND (inner, 1), - bitnum - TYPE_PRECISION (type))) + && (TREE_INT_CST_LOW (TREE_OPERAND (inner, 1)) + < (unsigned) (TYPE_PRECISION (type) - bitnum))) { bitnum += TREE_INT_CST_LOW (TREE_OPERAND (inner, 1)); inner = TREE_OPERAND (inner, 0);