On Sat, Apr 30, 2011 at 6:18 AM, Georg-Johann Lay <[email protected]> wrote:
> H.J. Lu schrieb:
>>
>> My target needs a scratch register to store a register in one register
>> class
>> and it needs to use memory to copy from one register class to another.
>> I have store and reload_out patterns for those registers. When reload
>> tries to copy data from one register class to another, it just stores the
>> register without using the proper reload_out pattern which has a scratch
>> register.
>>
>> How can I tell reload to always use a scratch register when storing a
>> register?
>
> Did you define the TARGET_SECONDARY_RELOAD hook?
>
I did. I have
if (!in_p && MEM_P (x))
{
sri->icode = direct_optab_handler (reload_out_optab, mode);
return NO_REGS;
}
Somehow, it isn't used when reloading
set (regclass1:SF) (regclass2:SF)
Reload just calls emit_move_insn directly to store regclass2.
--
H.J.