This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: PowerPC illegal displacement generation
- To: law at cygnus dot com
- Subject: Re: PowerPC illegal displacement generation
- From: David Edelsohn <dje at watson dot ibm dot com>
- Date: Thu, 21 Jan 1999 13:57:46 -0500
- Cc: egcs-bugs at cygnus dot com, Fred Bacon <bacon at mediaone dot net>, Daniel Jacobowitz <drow at false dot org>, Michael Meissner <meissner at cygnus dot com>
>>>>> Jeffrey A Law writes:
Jeff> Depends on a variety of things. It would be in the process of handling frame
Jeff> pointer elimination for example. You also really don't give any details here,
Jeff> and in reload, the details are everything.
I thought that the lreg and greg dumps had provided more details,
but here are the relevant pieces in condensed form along with debug_reload
output for the offending insn. "Reload 2" is the problem. I can wander
around more in the debugger, but I do not know enough about the reload
pass to know what I am looking for without some guidance. If you tell me
what to look for next, I will follow up.
David
Before reload:
(insn 61 126 161 (set (reg:DI 90)
(reg:DI 90)) 425 {*movdi_32} (insn_list 58 (nil))
(insn_list:REG_RETVAL 59 (expr_list:REG_EQUAL (and:DI (reg/v:DI 86)
(const_int 255))
(nil))))
After reload:
(insn 355 331 358 (set (reg:SI 9 r9)
(plus:SI (reg:SI 31 r31)
(const_int -25408))) 52 {*addsi3_internal1} (nil)
(nil))
(insn 358 355 354 (set (reg:DI 9 r9)
(mem:DI (plus:SI (reg:SI 9 r9)
(const_int 65536)))) -1 (nil)
(nil))
(insn 354 358 61 (set (reg:SI 13 r13)
(plus:SI (reg:SI 31 r31)
(const_int -25408))) 52 {*addsi3_internal1} (nil)
(nil))
(insn:HI 61 354 161 (set (mem:DI (plus:SI (reg:SI 13 r13)
(const_int 65536)))
(reg:DI 9 r9)) 425 {*movdi_32} (insn_list 58 (nil))
(insn_list:REG_RETVAL 59 (expr_list:REG_EQUAL (and:DI (reg/v:DI 86)
(const_int 255))
(nil))))
(gdb) p debug_reload()
Reload 0: reload_in (SI) = (plus:SI (reg:SI 31 r31)
(const_int -25408))
BASE_REGS, RELOAD_FOR_OPERAND_ADDRESS (opnum = 0), nongroup
reload_in_reg: (plus:SI (reg:SI 31 r31)
(const_int -25408))
reload_reg_rtx: (reg:SI 13 r13)
Reload 1: reload_in (SI) = (plus:SI (reg:SI 31 r31)
(const_int -25408))
BASE_REGS, RELOAD_FOR_INPUT_ADDRESS (opnum = 1)
reload_in_reg: (plus:SI (reg:SI 31 r31)
(const_int -25408))
reload_reg_rtx: (reg:SI 9 r9)
Reload 2: reload_in (DI) = (mem:DI (plus:SI (plus:SI (reg:SI 31 r31)
(const_int -25408))
(const_int 65536)))
GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 1)
reload_in_reg: (mem:DI (plus:SI (plus:SI (reg:SI 31 r31)
(const_int -25408))
(const_int 65536)))
reload_reg_rtx: (reg:DI 9 r9)