[committed][RISC-V]Don't reject constants in cmov condition

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.
This commit is contained in:
Jeff Law 2023-08-07 14:34:40 -06:00
parent adfc236c62
commit 18c453f0e6

View file

@ -3582,7 +3582,8 @@ riscv_expand_conditional_move (rtx dest, rtx op, rtx cons, rtx alt)
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