Juergen Zimmermann - Sun Microsystems - Walldorf Germany
2009-Oct-30 15:27 UTC
[LLVMdev] llvm-gcc-4.2 RELEASE_26 bootstrap failure on Solaris/SPARC - unhandled REAL_TYPE during compilation of '__powitf2'
Hi Anton,
thanks for the fast response.
Ty->dump() prints "{double, double}" in the failing case (just
before my
introduced assert).
HTH, and regards,
Juergen
On 10/30/09 16:19, Anton Korobeynikov wrote:> Hello, Juergen
>
>> With the full patch, I get the assertion of the 'unhandled
REAL_TYPE!',
>> so I wonder what needs to be done in order to get LLVM to produce
>> code for 'TREE_CODE(type) == REAL_TYPE' in the
'HandleArgument' function.
>>
>>
>> Does anyone have an idea? And why does this only happen on SPARC?
> What is the value of "Ty" in your case? Just do "call
Ty->dump()".
>
--
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
Anton Korobeynikov
2009-Oct-30 15:36 UTC
[LLVMdev] llvm-gcc-4.2 RELEASE_26 bootstrap failure on Solaris/SPARC - unhandled REAL_TYPE during compilation of '__powitf2'
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. -- With best regards, Anton Korobeynikov Faculty of Mathematics and Mechanics, Saint Petersburg State University
Juergen Zimmermann - Sun Microsystems - Walldorf Germany
2009-Nov-02 13:00 UTC
[LLVMdev] llvm-gcc-4.2 RELEASE_26 bootstrap failure on Solaris/SPARC - unhandled REAL_TYPE during compilation of '__powitf2'
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
Seemingly Similar Threads
- [LLVMdev] llvm-gcc-4.2 RELEASE_26 bootstrap failure on Solaris/SPARC - unhandled REAL_TYPE during compilation of '__powitf2'
- [LLVMdev] llvm-gcc-4.2 RELEASE_26 bootstrap failure on Solaris/SPARC - unhandled REAL_TYPE during compilation of '__powitf2'
- [LLVMdev] llvm-gcc-4.2 RELEASE_26 bootstrap failure on Solaris/SPARC - unhandled REAL_TYPE during compilation of '__powitf2'
- [LLVMdev] llvm-gcc-4.2 RELEASE_26 bootstrap failure on Solaris/SPARC - unhandled REAL_TYPE during compilation of '__powitf2'
- [LLVMdev] How to check for "SPARC code generation" in MachineBasicBlock.cpp?