double_reg_address_ok
Jeffrey A Law
law@cygnus.com
Mon Apr 6 17:35:00 GMT 1998
In message < 19980405034830.11235@dot.cygnus.com >you write:
> This is truely ancient history, but why
>
> Wed Sep 6 00:39:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
>
> * reload1.c (reload): When setting double_reg_address_ok,
> require it to be offsettable.
>
> 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.
>
> The fact that we currently require this means that on Sparc, reloading
> large offsets off of fp takes an extra instruction and register.
Well, it looks like this was a sparc related change:
* reload1.c (reload): When setting double_reg_address_ok,
require it to be offsettable.
* out-sparc.c (output_fp_move_double): Now safe to use std
for all reg+reg addresses.
I presume sparc.md at the time had a pattern which accepted any old
memory address. One might argue it should have accepted only offsettable
addresses or that output_fp_move_double should handle a memory address
that is not offsettable.
The PA handles this case by incrementing a register in the address
before the memref, then decrementing it afterwards.
jeff
More information about the Gcc
mailing list