This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix AMD64 handling of functions with huge stack frames (take 2)
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- To: gcc-patches at gcc dot gnu dot org
- Cc: jakub at redhat dot com
- Date: Sat, 1 Nov 2003 18:24:39 -0500 (EST)
- Subject: Re: [PATCH] Fix AMD64 handling of functions with huge stack frames (take 2)
> This patch passed testing on AMD64, IA64 and IA32.
> 20031023-4.c test fails on PPC64 and 20031023-{1,2,3,4}.c fail on S390x,
> but I assume those are architecture dependent problems which I'll try
> to tackle next.
The patch is failing on hppa64-hp-hpux11.11 due to some wierd reload errors.
The symbol_ref that causes the ultimate ICE first appears in the reloads
for insn 23.
/xxx/gnu/gcc-3.3/gcc/gcc/testsuite/gcc.c-torture/compile/20031023-1.c:54: error:
unrecognizable insn:
(insn 88 86 89 1 (set (reg:DI %r21)
(mem/u/f:DI (symbol_ref/u:DI ("*L$C0002") [flags 0x2]) [0 S8 A64])) -1 (nil)
(nil))
Reloads for insn # 23
Reload 0: R1_REGS, RELOAD_FOR_OPERAND_ADDRESS (opnum = 0), can't combine, second
ary_reload_p
reload_reg_rtx: (reg:SI %r1)
Reload 1: reload_in (DI) = (symbol_ref/u:DI ("*L$C0002") [flags 0x2])
GENERAL_REGS, RELOAD_FOR_OPERAND_ADDRESS (opnum = 0)
reload_in_reg: (symbol_ref/u:DI ("*L$C0002") [flags 0x2])
reload_reg_rtx: (reg:DI %r20)
secondary_in_reload = 0
secondary_in_icode = reload_indi
Reload 2: reload_in (DI) = (plus:DI (reg/f:DI %r3)
(mem/u/f:DI (symbol_ref/u:DI ("*L$C0002") [flags 0x2]) [0 S8 A64]))
GENERAL_REGS, RELOAD_FOR_OPERAND_ADDRESS (opnum = 0), can't combine
reload_in_reg: (plus:DI (reg/f:DI %r3)
(const_int 1099511627792 [0x10000000010]))
reload_reg_rtx: (reg:DI %r21)
Insns 22 and 23 look like:
(insn 22 21 23 1 (set (reg:DI 75)
(reg:DI %r28)) 118 {*pa.md:3313} (nil)
(expr_list:REG_DEAD (reg:DI %r28)
(nil)))
(insn 23 22 24 1 (set (reg:DI 66 [ <result> ])
(reg:DI 75)) 118 {*pa.md:3313} (nil)
(expr_list:REG_DEAD (reg:DI 75)
(nil)))
So, I don't understand what's going on in reload.
I can see pa.c needs some updates to handle large frames but that looks
like a separate issue.
Dave
--
J. David Anglin dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6602)