Millicode calls, GP register, ld -r
David Huggins-Daines
dhd@linuxcare.com
12 Aug 2000 11:23:35 -0400
Alan Modra <alan@linuxcare.com.au> writes:
> 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.
Interesting. It would be trivial to hack that into GCC, I just wonder
if there's some good reason it hasn't been done before.
--
dhd@linuxcare.com, http://www.linuxcare.com/
Linuxcare. Support for the revolution.