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