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.