This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: A reload inheritance bug
- From: Mark Shinwell <shinwell at codesourcery dot com>
- To: Rask Ingemann Lambertsen <rask at sygehus dot dk>
- Cc: GCC Development <gcc at gcc dot gnu dot org>, Richard Sandiford <richard at codesourcery dot com>, Ian Lance Taylor <iant at google dot com>
- Date: Tue, 15 May 2007 09:31:10 +0100
- Subject: Re: A reload inheritance bug
- References: <4648D8E1.2070307@codesourcery.com> <20070514234137.GQ5690@sygehus.dk>
Rask Ingemann Lambertsen wrote:
On Mon, May 14, 2007 at 10:47:13PM +0100, Mark Shinwell wrote:
[snip]
- the last use of reg2 (in B) is inside a matched input operand;
[snip]
The reload used for the instruction at B looks like this:
Reload 0: reload_in (SI) = (plus:SI (reg/f:SI 9 r9 [3275])
(reg:SI 10 sl [3812]))
GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 1), inc by 8
reload_in_reg: (plus:SI (reg/f:SI 9 r9 [3275])
(reg:SI 10 sl [3812]))
reload_reg_rtx: (reg:SI 9 r9)
where, in the notation from above, r9 is H and pseudo 3275 is reg2.
I could be missing something here, but aren't matched operands given a
reload type of RELOAD_OTHER rather than RELOAD_FOR_INPUT?
I might be tripping up on the terminology here then. The original
instruction is:
(insn:HI 5291 5282 5295 2 (set (reg:DF 4078 [ Jd+1040 ])
(mem/s:DF (plus:SI (reg/f:SI 3275)
(reg:SI 3812)) [30 Jd+1040 S8 A64])) 578 {*movdf_vfp} (nil)
(expr_list:REG_DEAD (reg/f:SI 3275)
(expr_list:REG_DEAD (reg:SI 3812)
(nil))))
and after reload we end up with:
(insn 6675 5282 5291 2 (set (reg:SI 9 r9)
(plus:SI (reg/f:SI 9 r9 [3275])
(reg:SI 10 sl [3812]))) 4 {*arm_addsi3} (nil)
(nil))
(insn:HI 5291 6675 5295 2 (set (reg:DF 75 s12 [orig:4078 Jd+1040 ] [4078])
(mem/s:DF (reg:SI 9 r9) [30 Jd+1040 S8 A64])) 578
{*movdf_vfp} (nil)
(nil))
Also, which register is the "inc by 8" note for? R9 or sl?
I thought the value of "inc" wasn't relevant here since we aren't
dealing with an autoincrement instruction (see the comment in
reload.h:struct reload).
Mark