Dear all,

I've been working on the Machine description of my target and was
wondering if you could help me out here.

I've been trying to force GCC out of it's habit of generating this code :
(insn 28 8 10 2 glob.c:13 (set (reg:DI 9 r9)
        (mem/s:DI (symbol_ref:DI ("data") <var_decl 0xb7e39688 data>)
[4 data+0 S8 A64])) 71 {*movdi_internal1} (nil))

-> Load r9, 0(data)

Because, in my target it's costly to do so, I would prefer :

Mov r10, data
Load r9, 0(r10)

This way, GCC can optimize this by taking the first move out of the
loop for example. Otherwise, I have do a final pass but that's too
late for all the optimizations.

My problem is that I've defined the define_expand "movdi" and it only
sees the right case after reload is in progress or completed.
Therefore, I can't create any new pseudos.

Any ideas on how to do this, I've been looking at the other
architectures but haven't seen anything that resembles this,
As always, thanks a lot for your time,
Jc

Reply via email to