Notice there is warning in predicates.md:
../../../riscv-gcc/gcc/config/riscv/predicates.md: In function ‘bool arith_operand_or_mode_mask(rtx, machine_mode)’:
../../../riscv-gcc/gcc/config/riscv/predicates.md:33:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
(match_test "INTVAL (op) == GET_MODE_MASK (HImode)
../../../riscv-gcc/gcc/config/riscv/predicates.md:34:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
|| INTVAL (op) == GET_MODE_MASK (SImode)"))))
gcc/ChangeLog:
* config/riscv/predicates.md: Change INTVAL into UINTVAL.
(define_predicate "arith_operand_or_mode_mask"
(ior (match_operand 0 "arith_operand")
(and (match_code "const_int")
- (match_test "INTVAL (op) == GET_MODE_MASK (HImode)
+ (match_test "UINTVAL (op) == GET_MODE_MASK (HImode)
|| UINTVAL (op) == GET_MODE_MASK (SImode)"))))
(define_predicate "lui_operand"