[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