On Thu, 2013-09-19 at 08:15 +0900, Kaz Kojima wrote: > Christian Bruel <christian.br...@st.com> wrote: > > && (!can_create_pseudo_p () && REG_P (operands[0]) && REG_P (operands[1]))" > > > > is necessary ? > > It looks an another hack to allow the 2nd and 3rd alternatives only > when reloading. If so, it might be a bit cleaner to use a special > predicate like
Yes, that's the idea behind it. Although I must say, I haven't tried it without the hack, i.e. allowing memories in the insn also before reload. If it doesn't cause any regressions, it's probably better to put the reg-reg alternative back to the "*movhi" and "*movqi" insns and move those above the displacement addressing patterns. > ;; Returns 1 if OP can be a source of a mov*_reg_reg insn. Same as > ;; general_movsrc_operand, but mem allowed only when reload in progress. > (define_predicate "movsrc_reg_reg_operand" > (match_code "subreg,reg,mem") > { > if (reload_in_progress && MEM_P (op)) > return general_movsrc_operand (op, mode); > > return register_operand (op, mode); > }) > > and its dst version for that purpose. Yes, sorry for suggesting the lazy version. Cheers, Oleg