On Sun, 16 Dec 2007, Hans-Peter Nilsson wrote: > On Wed, 12 Dec 2007, Dave Korn wrote: > > > On 12 December 2007 12:14, Revital1 Eres wrote: > > > > > It seems that the pair m and I is missing (which indicate the memory = > > > constant instruction). > > > > So doesn't the question then become "Why isn't reload reloading the > > constant > > into a register"? > > Yes. And the answer AFAIK is "because it doesn't see a way to > move a constant into a register; it understands "r", not "p" and > "q".
I think I have to correct myself; register allocation and reload *should* understand p and q as register constraints, given e.g. a correct REG_CLASS_FROM_LETTER definition and correct regclass macros. The latter were not disclosed and are usually a source of hard-to-find errors. Besides, if you can't directly move between p and q (as your constraints indicate) then as Rask says, you also need to tell GCC through the secondary-reload mechanisms. I can't help but thinking the best suggetion is for bviyer to let gdb answer the question by stepping through cc1 instead of relying on indirect debugging. That's what people do. ;) brgds, H-P