This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: PowerPC illegal displacement generation


>>>>> 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)



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]