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

Anton Korobeynikov anton at korobeynikov.info
Fri Oct 30 08:36:38 PDT 2009


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



More information about the llvm-dev mailing list