Millicode calls, GP register, ld -r
Alan Modra
alan@linuxcare.com.au
Sat, 12 Aug 2000 11:35:44 +1000 (EST)
On Sat, 12 Aug 2000, Alan Modra wrote:
> On 11 Aug 2000, David Huggins-Daines wrote:
>
> > Here's an (ugly) patch that works. Please verify that the last chunk
>
> Looks OK to me.
I'll install a slightly modified version of your patch. The other PLABEL
relocs should be handled as for PLABEL32, not that it matters for gcc
output as I've never caught gcc generating code that used PLABEL14R and
PLABEL21L. A pity, because current gcc PIC code for handling function
pointers is rather inefficient. Typically, you get something like:
.LC1:
.word P'bar
.
.
addil LT'.LC1,%r19
ldw RT'.LC1(%r1),%r22
ldw 0(%r22),%r22
which could all be replaced with
ldil LP'bar,%r22
ldo RP'bar(%r22),%r22
saving on code size, memory accesses, and relocs.
Alan Modra
--
Linuxcare. Support for the Revolution.