This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
URGENT!! :reload pass generate indirect memory ref
- From: Pierre Mallard <pierremallard at yahoo dot fr>
- To: gcc at gcc dot gnu dot org
- Date: Mon, 23 Sep 2002 15:03:33 +0200 (CEST)
- Subject: URGENT!! :reload pass generate indirect memory ref
Hi
I'm working on gcc 3.0.4
I'm stuck on the same problem for one week :
During the reload pass , the insn :
(insn/i 25 24 26 (set (subreg:QI (reg/v:HI 45) 0)
(mem/s:QI (plus:HI (reg/v/f:HI 38)
(const_int 9 [0x9])) 14)) 0 {*movqi}
(insn_list 24 (nil))
(nil))
extract from the allocate local reg pass leads to :
...
Spilling for insn 25.
Using reg 22 for reload 1
...
Reloads for insn # 25
Reload 0: reload_out (QI) = (mem:QI (plus:HI (reg/f:HI
28 __stackmem_l__)
(const_int 21 [0x15])) 32)
NO_REGS, RELOAD_FOR_OUTPUT (opnum = 0), optional
reload_out_reg: (subreg:QI (reg/v:HI 45) 0)
Reload 1: reload_in (QI) = (mem/s:QI (plus:HI
(reg/v/f:HI 38)
(const_int 9 [0x9])) 14)
GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 1)
reload_in_reg: (mem/s:QI (plus:HI (reg/v/f:HI 38)
(const_int 9 [0x9])) 14)
reload_reg_rtx: (reg:QI 16 r16)
extract from reload pass rtl dump.
This at the end leads to an unrecognizable insn :
(insn 1263 1260 25 (set (reg:QI 16 r16)
(mem/s:QI (plus:HI (mem/f:HI (plus:HI
(reg/f:HI 12 __stackret_l__)
(const_int 1 [0x1])) 0)
(const_int 9 [0x9])) 14)) -1 (nil)
(nil))
which is an indirect memory reference not allowed on
my proc code -spill_indirect_levels = 0 in
init_reload()-
Can someone give me any cue to fix this?
Feel free to ask more precision
Thanks a lot
regards
Pierre Mallard
___________________________________________________________
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Yahoo! Mail : http://fr.mail.yahoo.com