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 > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130618/3dbc23a5/attachment.html>
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>
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>