Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Sep 2002 15:36:56 -0400 (EDT)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        Mike Tibor <tibor@tibor.org>
Cc:        alpha@FreeBSD.ORG
Subject:   Re: Using GCC3.x and/or CPML to Build World/Kernel
Message-ID:  <15743.39768.338356.544370@grasshopper.cs.duke.edu>
In-Reply-To: <20020911103851.B53911-100000@xena.mikey.net>
References:  <20020911103851.B53911-100000@xena.mikey.net>

next in thread | previous in thread | raw e-mail | index | archive | help

Mike Tibor writes:
 > I've got a 164LX and an old AlphaStation 200 4/233 that I've been playing
 > with, and was curious about the use of CCC, CPML, and GCC3[012] to get
 > some better performance.
 > 
 > In searching the list archive, I noticed a reply Andrew Gallatin posted
 > (the subject was "Re: make world with compaq compiler"), a couple of
 > months ago, in which he mentioned that CCC wouldn't work to build world at
 > this time (Andrew, does this also include the kernel?).

Yes, especially the kernel.   Compaq ccc doesn't understand gnu
asm assembly convetions.  Certain header files which are included in most
of the kernel files contain lots of gnu assembly code.  Eg. 
/sys/alpha/include/alpha_cpu.h would need lots of ifdef's like this:

static __inline unsigned long
alpha_implver(void)
{
        u_int64_t result;
#ifdef __GNUC__
        __asm__ __volatile__ (
                "implver %0"
                : "=r" (result));
        return result;
#elif __DECC    
        return asm("implver %v0");
#else
#error "unsupported compiler"
#endif
}

Its mainly a matter of somebody who understands both asm formats, and who
has the time to do the manual cranking.   If you'd like to do the job,
go for it!  There have been other people talking about building the
world with icc (the intel c compiler) on x86.  You might want to
collaborate with them. 

I've forgotten if ccc understands __attributes__() directives.
That may be another source of problems.   I think icc may have
problems here too, but I'm fuzzy.

 > Using Linux on the old AS200, I had some success rebuilding most binaries
 > that had been linked to libm, with cpml.  Any opinions how that might work
 > on FreeBSD?

It should work fine.  In many cases, just linking with cpml provides
90% of the speedup that compiling with ccc would provide.

 > Also, I remember reading on axp-list@redhat.com awhile back that GCC 3
 > would be a significant improvement over 2.95 for the Alpha--what kind of
 > luck have people had using more recent GCC releases?  (ie, "generally
 > works okay, but don't even think about complaining here if you have
 > problems", or "forget it--it's not even close")  It may be from poor
 > search wording on my part, but I haven't been able to find anything in the
 > archive about this one.
 > 
 > I'm asking mainly just out of curiousity, but I thought it would save a
 > significant amount of work in the event that doing any of the above
 > completely hosed my systems.

-current uses gcc3.  I have not tried anything mathamatically
intensive, so I do not have a lot to say about it.  I did notice
that it seems to take a little longer to compile the same code
using gcc3 vs. gcc2.

The current gcc33 port does not build on -stable.  The java compiler
(of all things!) craps out with a floating point exception in printf
when creating Double.h.  To work around it, I built a shared libc with
-mieee.

Cheers,

Drew

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?15743.39768.338356.544370>