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