This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Reload question
- From: Eric Botcazou <ebotcazou at libertysurf dot fr>
- To: gcc at gcc dot gnu dot org
- Date: Tue, 18 Mar 2003 00:54:39 +0100
- Subject: Reload question
Hi,
This is related to high-priority PR target/7784 on Sparc.
Sparc has a non-offsettable REG+REG addressing mode. Now the compiler is
unable to reload the following address:
(mem/s:SI (plus:SI (plus:SI (reg/f:SI 22 %l6 [767])
(reg:SI 21 %l5 [769]))
(const_int 4 [0x4])) [16 dense.eden+0 S8 A64])
find_reloads_address() doesn't know how to handle the form (and the Sparc
specific LEGITIMIZE_RELOAD_ADDRESS doesn't help) so it propagates the
problem to find_reloads_address_1().
Now find_reloads_address_1() has these lines in its header:
/* Note that we take shortcuts assuming that no multi-reg machine mode
occurs as part of an address.
Also, this is not fully machine-customizable; it works for machines
such as VAXen and 68000's and 32000's, but other possible machines
could have addressing modes that this does not handle right. */
Hence the question: should I teach find_reloads_address_1() how to reload the
Sparc address form or tweak LEGITIMIZE_RELOAD_ADDRESS instead (or is the
question totally irrelevant to the problem) ?
--
Eric Botcazou