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
Apparently Analagous 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?