This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: alpha call patterns
- To: jfc at tiac dot net (John Carr)
- Subject: Re: alpha call patterns
- From: Richard Henderson <rth at cygnus dot com>
- Date: Sat, 27 Sep 1997 16:57:06 -0700 (PDT)
- Cc: egcs at cygnus dot com
- Reply-To: rth at cygnus dot com (Richard Henderson)
> 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~