alpha call patterns
Richard Henderson
rth@cygnus.com
Sat Sep 27 16:59:00 GMT 1997
> A while back I was working on improving the call patterns on Alpha. The
> problem is, the compiler doesn't know that a call is really a load
> instruction followed by a jump.
No, the problem is that gcc does not know how to separate address
loads and calls or memmory loads but keep them related, ie.
ldq $16,bar!literal!1
ldq $27,foo($gp)!literal!2
...
ldq $16,0($16)!lituse_base!
jsr $26,($27),foo!lituse_jsr!N
But for now, I'll warrent you'll get more speed on OSF/1 with ld -O2
as it is, since it should be able to replace ldq/jsr in most cases
with bsr. But it needs the LITUSE relocs emitted by the macro to do it.
> I don't know if newer versions of gcc or gas are any better.
Not wrt this issue. I know how to do what needs to be done to get
the link time optimizations, but havn't gotten to it yet.
> I gave up on Alpha a year ago (Linux/Alpha was so bad that I decided
> I would be better off using my Alpha as a table to hold my SPARC manuals).
Sorry to hear that. I think we're pretty stable these days, and though
we still need more compiler work we don't suck -- we can get 95% of DU's
cc performance on EV4, somewhat less on EV5. I hope haifa will be able
to help out with this.
r~
More information about the Gcc
mailing list