Re: GO_IF_LEGITIMATE_ADDRESS handling different addressing modes for load/store

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/28/2012 11:37 AM, Ayonam Ray wrote:
Hi,

My architecture allows base + immed and base + index for loads but
allows only base + immed for stores.  How do I differentiate between
them in the macro GO_IF_LEGITIMATE_ADDRESS?  I only get the MEM rtx in
that macro and have no clue whether the operand is an address for a
load or a store.  Is there any other way that I can differentiate
between them?
You can't differentiate them. Fundamentally the register allocator assumes that a memory address is either valid or invalid regardless of whether or not it's a load or store.

What ports have done in the past with this situation is to support the lowest common denominator in the movxx pattern, then add special constraints for the cases that are only available on the load (or store).

For an example, see how indexed addressing modes are handled on the PA. It has integer indexed loads, but no integer indexed stores. It has indexed loads and stores for floating point types.

jeff


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux