[LLVMdev] Failure handling half type

Alessio Giovanni Baroni alessiogiovanni.baroni at gmail.com
Sat Jun 29 01:08:40 PDT 2013


I don't.


2013/6/29 Keno Fischer <kfischer at college.harvard.edu>

> 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/aa3318df/attachment.html>


More information about the llvm-dev mailing list