movdi/df + reload issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I'm trying to add the movdi/movdf patterns to my HI target.
Everything is working without this pattern, but it will bring further
optimizations.

The problem is that I'm not able to make it work. I have several reload
issues and some questions to figure out how to fix them.

- I first try to define it with a post reload define_plit and the
constraints actually supported by HImode. But I'm getting an "unable to
find a register to spill in class DATA_REGS". This occurs around
function calls or lib calls which use 4 DATA_REGS class registers for
params amoung 7, what seems to make reload impossible if parameters are
allocated before the failed reload (?). I'm not sure of this... Any
opinion on this?
And is there a minimum number of registers in the class to make reload
work around some function calls?

- So I tried another option which seems to be less greedy: splitting
after reload with a scratch HI reg and more general constraints (such as
m:DI->m:DI through the scratch:HI), so does the m68hc11 target. The
generated code is better, but I'm facing another reload issue with the
insn that does not match its constraints, whereas it does for the 2
operands. only the scratch register has not been allocated. Is it a
matter of secondary_reload_info in TARGET_SECONDARY_RELOAD? What should
be done?
And once it will be fixed, should I define a tmp register and its
associated constraint to pass to match_scratch to save a register when
actually no scratch is needed ?


Thank you by advance,
Aurélien


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux