https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117547
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Richard Biener from comment #2) > I think the error is with const_0_to_255_operand which seems to operate > without context of the mode a VOIDmode CONST_INT is need to be interpreted > with. Alternatively every operand with such (or similar) predicate would > have to undergo trunc_int_for_mode - but I see both match_operand:SI > with const_0_to_255_operand and modeless match_operand. > > Note const_0_to_255_operand gets passed the mode, but I'm not sure how > to access this in > > (define_predicate "const_0_to_255_operand" > (and (match_code "const_int") > (match_test "IN_RANGE (INTVAL (op), 0, 255)"))) It may be too late for const_0_to_255_operand to check even with mode. We may not use the host operation to check the target value.