diff --git a/gcc/expr.cc b/gcc/expr.cc index 02f24c00148..c033761f317 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -12958,7 +12958,12 @@ expand_single_bit_test (location_t loc, enum tree_code code, rtx inner0 = expand_expr (inner, NULL_RTX, VOIDmode, EXPAND_NORMAL); - inner0 = extract_bit_field (inner0, 1, bitnum, 1, target, + int bitpos = bitnum; + + if (BYTES_BIG_ENDIAN) + bitpos = GET_MODE_BITSIZE (inner0) - 1 - bitpos; + + inner0 = extract_bit_field (inner0, 1, bitpos, 1, target, operand_mode, mode, 0, NULL); if (code == EQ_EXPR)