This is the mail archive of the
mailing list for the GCC project.
Re: [RFC] Fix PR rtl-optimization/33732
On Thu, Nov 08, 2007 at 12:52:46PM +0100, Eric Botcazou wrote:
> > I'm not sure what the best approach to fixing this is. Should we disregard
> > notes referencing former pseudo-registers that have been assigned more than
> > one hard register, between global alloc and reload?
> > && (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER
> > || hard_regno_nregs [XEXP (note, 0)] == 1)
> > Would this pessimize much in practice?
> Unsurprisingly this doesn't have any effect for a bootstrap of the compiler on
> x86-64 and changes 4 reloads for a bootstrap on x86 (1 slight overall win, 2
> slight losses and 1 net loss because of a cascading effect) related to 64-bit
> mult and div operations. The pessimization is very likely mitigated by the
> lower-subreg pass and the new ra-conflict.c code.
Yes. It will affect insns which really do operate on multiword hard regs.
Other than mult, div, sign extend and such, some archs have multiword insns,
e.g. 16-bit "mov" and "add" on the otherwise 8-bit AVR.
> Other suggestions still welcome.
> * reload.c (push_reload): Check that the REG_DEAD note was referring
> to a hardreg or to a pseudo that has been assigned exactly one hardreg
> before considering it in order to select the reload register.
> (combine_reloads): Likewise.
> (find_dummy_reload): Likewise.
Tested with no regressions on the following simulator targets:
m32c-unknown-elf (C and C++ only)
sh-unknown-elf isn't working and frv-unknown-elf hasn't finished yet.
How do you get a dump of all reloads during a bootstrap? Do you just add
-fdump-rtl-greg to BOOT_CFLAGS?
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year