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.