https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89195
--- Comment #1 from Wilco <wilco at gcc dot gnu.org> --- make_extraction does: if (MEM_P (inner)) { poly_int64 offset; /* POS counts from lsb, but make OFFSET count in memory order. */ if (BYTES_BIG_ENDIAN) offset = bits_to_bytes_round_down (GET_MODE_PRECISION (is_mode) - len - pos); else offset = pos / BITS_PER_UNIT; new_rtx = adjust_address_nv (inner, tmode, offset); len is unsigned HOST_WIDE_INT, so bits_to_bytes_round_down does an unsigned division...