This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: legitimate address load/store


Hi,

On Sun, 2013-08-04 at 14:47 -0700, Hendrik Greving wrote:
> Hi,
> 
> 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.

Cheers,
Oleg


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]