Michael Eager <[EMAIL PROTECTED]> writes:

> I'm running into a situation where reload is replacing
> a pseudo-register in an insn with a memory reference.
> The problem is that this is happening in a memory ref.
>
> The initial pattern is something like
>
> (set (reg/v:SI 1) (mem/s:SI (plus:SI
>       (reg/f:SI 30)
>       (const_int 4)) ))
>
> After reload, this becomes
>
> (set (reg/v:SI 1) (mem/s:SI (plus:SI
>       (mem/f/c:SI (plus:SI (reg/f:SI 19) (const_int -2))
>         (const_int 4))
>
> The reg-equiv for pseudo-reg 30 is the mem ref in the middle.
>
> Any idea about why this might be happening, or, better,
> how to get reload to generate a load from reg-equiv to a reg
> rather than replace the pseudo-reg with the reg-equiv?

This is a normal occurrence during the course of reload.  If this
escapes from reload, it suggests that your GO_IF_LEGITIMATE_ADDRESS
macro is incorrectly accepting a MEM as a memory address, or that your
insn operand predicate is somehow accepting it.

Ian

Reply via email to