[LLVMdev] long double type on ARM

Jin Gu Kang jaykang10 at imrc.kist.re.kr
Wed Sep 30 06:27:19 PDT 2009

Dear LLVM members.

I am compiling coreutils-7.4 package for ARM linux using LLVM 2.5 version.

When i compiled 'od' program in coreutils package using LLVM 2.5,
i could see the error message on llc processing.

> llvm-gcc -emit-llvm  ./od.c  -c  -o  ./od.bc  -other-options...
> llc -march=arm ./od.bc -f -o ./od.s
llc: /home/jaykang10/HardDisk2/Projects/LLVM/src/llvm-2.5/lib/Target/TargetData.cpp:305: unsigned int llvm::TargetData::getAlignmentInfo(llvm::AlignTypeEnum, uint32_t, bool, const llvm::Type*) const: Assertion `AlignType == VECTOR_ALIGN && "Unknown alignment type!"' failed.

The problem was that
when i converted 'od' source code to llvm bitcode, long double type of 'od' source code was changed to x86_fp80 type in llvm bitcode and then llc on ARM target was not support x86_fp80 type.

I think that long double type on ARM is 8 byte. (same as double type)

When we use llvm on ARM target,(or other target not support x86_fp80)
i think it might be better to convert long double type in C to double type in llvm bitcode on llvm-gcc or
treat x86_fp80 type in llvm bitcode as double type on llc.
(I wonder if we select the target at llvm-gcc build time)

I would like to know how to solve the above problem.

Thank you

Best regards,

Jin-Gu Kang

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090930/afa2be42/attachment.html>

More information about the llvm-dev mailing list