https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79240
--- Comment #4 from Dominik Vogt <vogt at linux dot vnet.ibm.com> --- > So, either this is a bug in s390_extzv_shift_ok that is should use > s390_contiguous_bitmask_p (contig, true, bitsize, &start, &end); > instead of > s390_contiguous_bitmask_nowrap_p (contig, bitsize, &start, &end); > and deal with the start > end case somehow. > Or the 4 patterns that use s390_extzv_shift_ok should use > contiguous_bitmask_nowrap_operand instead of contiguous_bitmask_operand. Or both. s390_extzv_shift_ok definitely has no business with wrapping operands, but maybe an assertion is too harsh. The patterns should still use contiguous_bitmask_nowrap_operand and not suggest that a wrapping bitmask would be acceptable. -- A fix is available here: https://gcc.gnu.org/ml/gcc-patches/2017-01/msg02063.html