This test is too aggressive. Constants have VOIDmode, so we need to let the
through this phase of conditional move support.
Fixes several missed conditional moves with the trunk.
gcc/
* config/riscv/riscv.cc (riscv_expand_conditional_move): Allow
VOIDmode operands to conditional before canonicalization.
enforce that so that we don't strip away a sign_extension
thinking it is unnecessary. We might consider using
riscv_extend_operands if they are not already properly extended. */
- if (GET_MODE (op0) != word_mode || GET_MODE (op1) != word_mode)
+ if ((GET_MODE (op0) != word_mode && GET_MODE (op0) != VOIDmode)
+ || (GET_MODE (op1) != word_mode && GET_MODE (op1) != VOIDmode))
return false;
/* Canonicalize the comparison. It must be an equality comparison