Le mercredi 09 avril 2008 à 21:19 +0200, Stelian Pop a écrit :

> > You might need to define LEGITIMIZE_RELOAD_ADDRESS, or at least
> > LEGITIMIZE_ADDRESS.  I don't know if reload has assumptions about such
> > offsets, but the m32c port has a limit on the offset range so it might
> > help you figure out your port.
> 
> Ah, this looks exactly like what I needed, thanks!
> 
> I'll try this and come back afterwards.

Ok, I tried.

Since displacements are not allowed in my addressing mode, I need to
replace:
        (mem (plus (reg X) (const_int Y)))
into
        (set (reg Z) (const_int Y))
        (set (reg Z) (plus (reg Z) (reg X)))
        (mem (reg Z)

This means I need to create a new pseodo register. This is allowed in
LEGITIMIZE_ADDRESS but not in LEGITIMIZE_RELOAD_ADDRESS...

Is there a way to do this ?

Maybe I should reserve a special register for this usage (say r0). But
maybe there is a better solution...

Thanks,
-- 
Stelian Pop <[EMAIL PROTECTED]>

Reply via email to