[LLVMdev] llvm-gcc-4.2 RELEASE_26 bootstrap failure on Solaris/SPARC - unhandled REAL_TYPE during compilation of '__powitf2'

Juergen Zimmermann - Sun Microsystems - Walldorf Germany Juergen.Zimmermann at Sun.COM
Mon Nov 2 05:00:04 PST 2009


Anton,
I went with the first alternative with some success.

However, now I get some errors during the build of libgcc
with 'multiply defined symbols'.


One thing I noticed is the following fact:

Definition in unwind-pe.h:

static const unsigned char *
read_sleb128 (const unsigned char *p, _Unwind_Sword *val)

---
GCC 4.2.4 bootstrapped on Solaris/SPARC
-bash-3.00$ nm unwind-dw2.o | grep read_sleb128
[9]     |      1024|      84|FUNC |LOCL |0    |1      |read_sleb128

---
LLVM-gcc 4.2 on Solaris/SPARC with 64-bit long-double:
-bash-3.00$ nm unwind-dw2.o | grep read_sleb128
[613]   |       144|       0|FUNC |GLOB |0    |1      |read_sleb128




which means that LLVM generates this static function as global instead
of local like the native GCC does.


Any idea how this could be fixed?

Regards,
   Juergen


On 10/30/09 16:36, Anton Korobeynikov wrote:
> Hello, Juergen
> 
>> Ty->dump() prints "{double, double}" in the failing case (just before my
>> introduced assert).
> The answer is simple. The code in question contains extended IEEE FP
> argument / return type (aka 'long double'). By default it's lowered
> into struct {double, double} as you already saw and sparc currently
> does not provide any argument layout hooks.
> 
> There are two possible solutions for a moment:
> 1. Temporary turn 128-bit fp into 64-bit fp (there should be some
> define in config/sparc/*)
> 2. Turn 128bit fp into normal first-class type (grep for TARGET_ZARCH
> into llvm-types.cpp, where this mapping is done for s390x), but then
> you will need to implement all codegen for 128-bit fp, since sparc
> backend is currently really weak.
> 

-- 
Sun Microsystems GmbH		Juergen Zimmermann
Altrottstrasse 31		ISV Engineering EMEA, Technical Lead for SAP
69190 Walldorf			Phone: +49 (0)6227 356 256
Germany				Fax: +49 (0)6227 356 222
                                 mailto:Juergen.Zimmermann at Sun.COM

Sun Microsystems GmbH
Altrottstrasse 31, 69190 Walldorf
Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten
Amtsgericht Muenchen: HRB 161028
Geschaeftsfuehrer: Thomas Schroeder, Wolfgang Engels, Wolf Frenkel
Vorsitzender des Aufsichtsrates: Martin Haering



More information about the llvm-dev mailing list