where are caller-save addresses legitimized?

Greg McGary greg.mcgary@ericsson.com
Thu May 6 03:35:00 GMT 2010

On 05/05/10 20:21, Jeff Law wrote:
> On 05/05/10 17:45, Greg McGary wrote:
>> reload()>  setup_save_areas()>  assign_stack_local_1() creates a mem
>> address whose offset too large to fit into the machine insn's offset
>> operand.  Later, reload()>  save_call_clobbered_regs()>  insert_save()
>>> adjust_address_1()>  change_address_1() asserts because the address
>> is not legitimate.
>> My port defines all the address legitimizing target hooks, but none
>> are called with the address in question.  Where/how is the address
>> supposed to be fixed-up in this case?  Or, where/how does gcc avoid
>> producing an illegitimate address in the first place?
> I'm not sure they are ever legitimized -- IIRC caller-save tries to only
> generate addressing modes which are safe for precisely this reason.

Apparently not so: caller save is quite capable of producing invalid 
Perhaps my port needs some hook to help GCC produce good addresses?
I've been looking, but haven't found it yet...


More information about the Gcc mailing list