double_reg_address_ok

Jim Wilson wilson@cygnus.com
Wed Apr 8 02:13:00 GMT 1998


	There does not currently appear to be anything about the code that
	is predicated on double_reg_address_ok that seems to require that
	the result be offsettable.

There are places in reload where it assumes that if an address has been
reloaded already, then it must be offsettable.  This avoids needing multiple
possibly conflicting reloads for the same address.  See the 'o' case in
reload.c.

See in particular the reg_equiv_address case.  If we have an address using
an unallocated pseudo, and that pseudo lives in a stack slot with such a
large offset that it can't be accessed with a REG+CONST_INT addressing mode,
and we need this address to be offsettable, then using a REG+REG addressing
mode to access it will fail.  Hence we can't allow reload to generate it.
This is just an educated guess though, so I am not sure if it is right.
And if it is right, there may be an easy way to work around it but that no
one has tried yet.

Jim



More information about the Gcc mailing list