[LLVMdev] Failure handling half type

Keno Fischer kfischer at college.harvard.edu
Sat Jun 29 00:57:48 PDT 2013


Just ran into this as well. Did you ever open a a bug report about it?


On Tue, Jun 18, 2013 at 3:43 AM, Alessio Giovanni Baroni <
alessiogiovanni.baroni at gmail.com> wrote:

> Here there is the dump:
>
> SelectionDAG.cpp:81: static bool
> llvm::ConstantFPSDNode::isValueValidForType(llvm::EVT, const llvm::APFloat
> &): Assertion `VT.isFloatingPoint() && "Can only convert between FP types"'
> failed.
> 0  libLLVMSupport.so      0x00007f7405022de5
> llvm::sys::PrintStackTrace(_IO_FILE*) + 37
> 1  libLLVMSupport.so      0x00007f74050232e3
> 2  libpthread.so.0        0x00007f7404960cb0
> 3  libc.so.6              0x00007f7403bba425 gsignal + 53
> 4  libc.so.6              0x00007f7403bbdb8b abort + 379
> 5  libc.so.6              0x00007f7403bb30ee
> 6  libc.so.6              0x00007f7403bb3192
> 7  libLLVMSelectionDAG.so 0x00007f7408266500
> llvm::ConstantFPSDNode::isValueValidForType(llvm::EVT, llvm::APFloat
> const&) + 320
> 8  libLLVMSelectionDAG.so 0x00007f74081df6cf
> 9  libLLVMSelectionDAG.so 0x00007f74081d12b1
> 10 libLLVMSelectionDAG.so 0x00007f74081cff57
> llvm::SelectionDAG::Legalize() + 375
> 11 libLLVMSelectionDAG.so 0x00007f74082d6604
> llvm::SelectionDAGISel::CodeGenAndEmitDAG() + 3700
> 12 libLLVMSelectionDAG.so 0x00007f74082d4f07
> llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 6455
> 13 libLLVMSelectionDAG.so 0x00007f74082d2876
> llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 1318
> 14 libLLVMCodeGen.so      0x00007f74074885dd
> llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 125
> 15 libLLVMCore.so         0x00007f740583e2ac
> llvm::FPPassManager::runOnFunction(llvm::Function&) + 364
> 16 libLLVMCore.so         0x00007f740583e52b
> llvm::FPPassManager::runOnModule(llvm::Module&) + 59
> 17 libLLVMCore.so         0x00007f740583e8d7
> llvm::MPPassManager::runOnModule(llvm::Module&) + 519
> 18 libLLVMCore.so         0x00007f740583ef6b
> llvm::PassManagerImpl::run(llvm::Module&) + 539
> 19 libLLVMCore.so         0x00007f740583f0da
> llvm::PassManager::run(llvm::Module&) + 10
> 20 llc                    0x000000000040839c
> 21 libc.so.6              0x00007f7403ba576d __libc_start_main + 237
> 22 llc                    0x0000000000406d7d
> Stack dump:
> 0.    Program arguments: llc -asm-verbose -filetype=asm -o qwe.S qwe.ll
> 1.    Running pass 'Function Pass Manager' on module 'qwe.ll'.
> 2.    Running pass 'X86 DAG->DAG Instruction Selection' on function '@foo'
>
>
> A small note: this is LLVM 3.3 final linked with libc++ on Ubuntu Linux
> 12.10.
>
>
> 2013/6/17 Jim Grosbach <grosbach at apple.com>
>
>> Make sure you’re running LLVM with assertions enabled. You’ll get more
>> information about what’s going wrong that way.
>>
>> That said, yes, this looks like a bug.
>> Specifically, SelectionDAGLegalize::ExpandConstantFP() assumes that f32 is
>> the smallest floating point constant type it’ll need to handle, and that
>> MVT enum ordering reflects that.
>>
>>   while (SVT != MVT::f32) {
>>
>>     SVT = (MVT::SimpleValueType)(SVT.getSimpleVT().SimpleTy - 1);
>>     ...
>>   }
>>
>> That function, and possibly others, need to be taught how to handle
>> half-floats, it looks like.
>>
>> -Jim
>>
>> On Jun 17, 2013, at 6:59 AM, Alessio Giovanni Baroni <
>> alessiogiovanni.baroni at gmail.com> wrote:
>>
>> Hi,
>>
>> if I write the following simple program:
>>
>> target datalayout =
>> "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
>> target triple = "x86_64-unknown-linux-gnu"
>>
>> define void @foo () {
>>     %1 = alloca half
>>     store half 0xH42CC, half* %1   ; 0xH42CC = 3.4
>>     %2 = load half* %1
>>     ret void
>> }
>>
>> llc goes in SIGABRT. In the reference manual says that it's  correct
>> syntax.
>>
>> It's a bug?
>>
>> Thanks.
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130629/4b37e6a5/attachment.html>


More information about the llvm-dev mailing list