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