On Fri, Jun 1, 2012 at 12:05 AM, David Miller <da...@davemloft.net> wrote: > From: Steven Bosscher <stevenb....@gmail.com> > Date: Thu, 31 May 2012 23:42:26 +0200 > >> Could you please give the attached patch a try? >> Sorry for the inconvenience! > > I'm sure it works, but function calls are quite expensive on > sparc.
There are four eliminable registers on sparc, and for one of them there already is a function call. On the whole of GCC, will the few extra function calls be a problem? FWIW: targets that have INITIAL_ELIMINATION_OFFSET as a function (i.e. macro that just calls a function): alpha, arm,avr, bfin, c6x, cr16, cris, epiphany, fr30, frv, h8300, ix86, ia64, iq2000, lm32, m32c, m68k, mcore, mep, microblaze, mips, mmix, mn10300, moxie, pa, pdp11, picochip, rl78, rs6000, rx, s390, score, sh, spu, stormy16, tilegx, tilepro, targets that have it as an elaborate macro: m32r, sparc, v850, xtensa, So SPARC is in the overwhelming minority :-) I'm sure that in the long list of targets that have INITIAL_ELIMINATION_OFFSET as a call there are other targets where a call is relatively expensive. Besides, at least as far as I understand, it's sort-of a "design goal" for gcc to move from target macros to target hooks. So you're going to have to deal with some more calls anyway. The alternative is to put back output.h in a file that really doesn't need it, other than for some target macros. That seems rather fragile to me, target hooks/functions are more robust. Ciao! Steven