On 01/06/2011 06:58 AM, Frederic Riss wrote: > 136 is a pseudo. I have movdf and movsf patterns that accepts > constants.
This one statement is suspicious to me. Do I read from this that you have fp move patterns that accept constants but not registers? Move patterns are special in that they *must* handle everything, modulo some constants which reload can spill to memory. The other piece of advice that I can give from elsewhere in this thread is that you should never match or generate SUBREG by hand. You should always use the gen_lowpart, gen_highpart, simplify_gen_subreg interfaces. Those will greatly simplify the double-subreg issues that you have been having. Finally, do you actually have dedicated hard registers for fp? If yours is a soft-fp target -- or one of the rare targets that does hard fp out of the general register set -- consider totally eliminating the fp move patterns. Once upon a time gcc required them even for soft-fp, but we've gotten much better with introduction of the lower-subreg pass. Not that too many existing ports have been updated for that pass, leading others to conclude that the patterns are still required... r~