* double_reg_address_ok
@ 1998-04-05 5:39 Richard Henderson
1998-04-05 17:27 ` double_reg_address_ok Richard Henderson
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Richard Henderson @ 1998-04-05 5:39 UTC (permalink / raw)
To: egcs; +Cc: gcc2
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.
r~
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: double_reg_address_ok
1998-04-05 5:39 double_reg_address_ok Richard Henderson
@ 1998-04-05 17:27 ` Richard Henderson
1998-04-06 17:35 ` double_reg_address_ok Jeffrey A Law
1998-04-08 2:13 ` double_reg_address_ok Jim Wilson
2 siblings, 0 replies; 4+ messages in thread
From: Richard Henderson @ 1998-04-05 17:27 UTC (permalink / raw)
To: Richard Henderson; +Cc: egcs, gcc2
> 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.
Follow up: A Sparc bootstrap and check show no regressions. FWIW.
r~
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: double_reg_address_ok
1998-04-05 5:39 double_reg_address_ok Richard Henderson
1998-04-05 17:27 ` double_reg_address_ok Richard Henderson
@ 1998-04-06 17:35 ` Jeffrey A Law
1998-04-08 2:13 ` double_reg_address_ok Jim Wilson
2 siblings, 0 replies; 4+ messages in thread
From: Jeffrey A Law @ 1998-04-06 17:35 UTC (permalink / raw)
To: Richard Henderson; +Cc: egcs, gcc2
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
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: double_reg_address_ok
1998-04-05 5:39 double_reg_address_ok Richard Henderson
1998-04-05 17:27 ` double_reg_address_ok Richard Henderson
1998-04-06 17:35 ` double_reg_address_ok Jeffrey A Law
@ 1998-04-08 2:13 ` Jim Wilson
2 siblings, 0 replies; 4+ messages in thread
From: Jim Wilson @ 1998-04-08 2:13 UTC (permalink / raw)
To: Richard Henderson; +Cc: egcs, gcc2
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
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~1998-04-08 2:13 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-04-05 5:39 double_reg_address_ok Richard Henderson
1998-04-05 17:27 ` double_reg_address_ok Richard Henderson
1998-04-06 17:35 ` double_reg_address_ok Jeffrey A Law
1998-04-08 2:13 ` double_reg_address_ok Jim Wilson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).