Christian Bruel <[email protected]> wrote:
> (define_insn "*mov<mode>_reg_reg"
> - [(set (match_operand:QIHI 0 "arith_reg_dest" "=r,m,*z")
> - (match_operand:QIHI 1 "register_operand" "r,*z,m"))]
> - "TARGET_SH1 && !t_reg_operand (operands[1], VOIDmode)"
> + [(set (match_operand:QIHI 0 "general_movdst_operand" "=r,m,*z")
> + (match_operand:QIHI 1 "general_movsrc_operand" "r,*z,m"))]
> + "TARGET_SH1 && !t_reg_operand (operands[1], VOIDmode)
> + && arith_reg_dest (operands[0], <MODE>mode)
> + && register_operand (operands[1], <MODE>mode)"
I thought that predicates explicitly allowing mem only when reload
in progress are defensive because I guess there is no guarantee
that the condition part of the insn will be never used in spilling.
Re-factoring suggested by Oleg and Rechard would be the right thing
to do, though it might be a bit invasive for 4.8.
Regards,
kaz