legitimate address load/store
Sun Aug 4 22:35:00 GMT 2013
On Sun, 2013-08-04 at 14:47 -0700, Hendrik Greving wrote:
> For machines that have an asymmetric memory operand format for
> load/stores (load/store format is different), how - if - is that
> supported in the backend?
> GO_IF_LEGITIMATE_ADDRESS/TARGET_LEGITIMATE_ADDRESS_P don't seem to
> care whether it is a load or store. As an example, I'd want to allow
> more complex addresses for loads, but not for stores.
That is not possible indeed. However, depending on what exactly you
want to do you could try some workarounds. For example, in
legitimate_address just check whether the address is any kind of valid
address. Then do detailed case by case matching/rejection/splitting
with operand predicates in mem load/store insns.
Another thing that might work is to allow only simple addresses until
some point via legitimate_address and legitimize_address. Then use
various RTL passes (e.g. combine) to form more complex addresses.
More information about the Gcc-help