Subject: Re: Exactly what is wrong with our compiler?
To: None <gadams@avernus.com, port-sparc64@netbsd.org>
From: None <eeh@netbsd.org>
List: port-sparc64
Date: 01/03/2002 17:00:51
| As I understand it, there are known to be problems with the sparc v9 
| code generated by gcc (both 2.9x.x and 3.x). According to a brief email 
| conversation with one of the gcc maintainers, 3.x is not considered 
| working on Ultrasparc. I also notice that we use 2.95.3 as our sparc64 
| compiler, which hints that we (NetBSD) also know of problems with gcc 
| 3.x. I also understand that we have a number of patches relative to gcc 
| 2.95.3 for our NetBSD-specific version of the compiler. Still, as I 
| understand it, there are problems with our 2.95.3.
|
| But nowhere can I find documentation about just what is wrong with the 
| compiler. Does anyone really know, or do we just know that things don't 
| quite work all the time? Is there any web page or set of pages that 
| contain this information? I'd be happy to gather and summarize (suitable 
| for inclusion on a port-sparc web page, even) if anyone can point me at 
| concrete information about what's going on, here.

Both floating point and C++ code generation is just broken.

| I do know about the NTP problem, recently discussed here, that isn't 
| strictly a gcc codegen error; more of a disagreement. I also know that 
| we have FPU emulation problems with quad floats. (As I understand it, 
| this is a matter of missing support for quad floats in the FPU emulator. 
| I don't understand why we're using an FPU emulator for this, though -- 
| surely we have a real FPU! Or is it that the FPU doesn't handle quad 
| floats, and we are just emulating what an FPU would do with quad floats 
| if it supported them? In that event, -mquad-soft-float works, so why 
| can't the emulator do what -mquad-soft-float does? Would this be 
| equivalent to making that option the default?)

As far as I know the NTP problem is not a sparc64 specific problem but
a general gcc foulup that happens to hit sparc64 because it's a 64-bit
platform and doesn't to alignment fixups.

| I thank anyone in advance for any help elucidating this.
|
| In the meantime, I've discovered that the db library built as part of 
| MIT Kerberos 5 (and probably much of the rest of krb5) doesn't work as 
| compiled by our in-tree gcc. (It works with at least gcc 2.95.2 on 
| Solaris 7, although that's producing 32-bit V8+ code, of course.) 
| Despite some time spent in gdb, I haven't yet tracked down at what point 
| it fails, but it does fail the regression tests. That, and nothing 
| works. Hmph. (And, before anyone asks: yes, I know we have Heimdal 
| in-tree, but I run MIT krb5 at my sites, and the two are incompatible in 
| distressing ways.)

There may be issues with SPARC assembly code routines, or the sources 
could just not be 64-bit clean.

Eduardo