Christian Bruel <christian.br...@st.com> 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