https://llvm.org/bugs/show_bug.cgi?id=30562
Bug ID: 30562 Summary: Selection DAG error: Detected cycle in SelectionDAG Product: new-bugs Version: 3.9 Hardware: PC OS: Linux Status: NEW Severity: normal Priority: P Component: new bugs Assignee: unassignedb...@nondot.org Reporter: serge.guel...@telecom-bretagne.eu CC: llvm-bugs@lists.llvm.org Classification: Unclassified Created attachment 17376 --> https://llvm.org/bugs/attachment.cgi?id=17376&action=edit Faulty input bitcode While compiling the reduced test case in attachment, the compiler crashes with the backtrace below. Changing vector to scalar fixes the issue... Overran sorted position: t14: ch = store<ST16[%l15](align=8)> t0, t2, t11, undef:i64 t2: v2i64,ch = CopyFromReg t0, Register:v2i64 %vreg0 t1: v2i64 = Register %vreg0 t11: i64 = add t8, t10 t8: i64,ch = CopyFromReg t0, Register:i64 %vreg2 t7: i64 = Register %vreg2 t10: i64 = shl t42, Constant:i8<3> t42: i64,ch = load<LD8[<unknown>]> t14, t41, undef:i64 t41: i64 = add t47, t11 t47: i64 = shl t5, Constant:i8<3> t5: i64 = sign_extend t4 t4: i32,ch = CopyFromReg t0, Register:i32 %vreg4 t3: i32 = Register %vreg4 t38: i8 = Constant<3> t11: i64 = add t8, t10 t8: i64,ch = CopyFromReg t0, Register:i64 %vreg2 t7: i64 = Register %vreg2 t10: i64 = shl t42, Constant:i8<3> t42: i64,ch = load<LD8[<unknown>]> t14, t41, undef:i64 t41: i64 = add t47, t11 t47: i64 = shl t5, Constant:i8<3> t11: i64 = add t8, t10 t13: i64 = undef t38: i8 = Constant<3> t13: i64 = undef t38: i8 = Constant<3> t13: i64 = undef Checking if this is due to cycles Detected cycle in SelectionDAG Offending node: t42: i64,ch = load<LD8[<unknown>]> t14, t41, undef:i64 t41: i64 = add t47, t11 t47: i64 = shl t5, Constant:i8<3> t5: i64 = sign_extend t4 t4: i32,ch = CopyFromReg t0, Register:i32 %vreg4 t3: i32 = Register %vreg4 t38: i8 = Constant<3> t11: i64 = add t8, t10 t8: i64,ch = CopyFromReg t0, Register:i64 %vreg2 t7: i64 = Register %vreg2 t10: i64 = shl t42, Constant:i8<3> t42: i64,ch = load<LD8[<unknown>]> t14, t41, undef:i64 t41: i64 = add t47, t11 t47: i64 = shl t5, Constant:i8<3> t5: i64 = sign_extend t4 t4: i32,ch = CopyFromReg t0, Register:i32 %vreg4 t3: i32 = Register %vreg4 t38: i8 = Constant<3> t11: i64 = add t8, t10 t8: i64,ch = CopyFromReg t0, Register:i64 %vreg2 t7: i64 = Register %vreg2 t10: i64 = shl t42, Constant:i8<3> t42: i64,ch = load<LD8[<unknown>]> t14, t41, undef:i64 t41: i64 = add t47, t11 t13: i64 = undef t38: i8 = Constant<3> t13: i64 = undef t38: i8 = Constant<3> t13: i64 = undef #0 0x00007fe83ffe4d88 llvm::sys::PrintStackTrace(llvm::raw_ostream&) /tmp/_nbuild/../lib/Support/Unix/Signals.inc:402:13 #1 0x00007fe83ffe5416 bool __gnu_cxx::operator!=<std::pair<void (*)(void*), void*>*, std::vector<std::pair<void (*)(void*), void*>, std::allocator<std::pair<void (*)(void*), void*> > > >(__gnu_cxx::__normal_iterator<std::pair<void (*)(void*), void*>*, std::vector<std::pair<void (*)(void*), void*>, std::allocator<std::pair<void (*)(void*), void*> > > > const&, __gnu_cxx::__normal_iterator<std::pair<void (*)(void*), void*>*, std::vector<std::pair<void (*)(void*), void*>, std::allocator<std::pair<void (*)(void*), void*> > > > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/bits/stl_iterator.h:873:27 #2 0x00007fe83ffe5416 llvm::sys::RunSignalHandlers() /tmp/_nbuild/../lib/Support/Signals.cpp:44:0 #3 0x00007fe83ffe5416 SignalHandler(int) /tmp/_nbuild/../lib/Support/Unix/Signals.inc:246:0 #4 0x00007fe846bbaeb0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x10eb0) #5 0x00007fe83dfd3198 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x33198) #6 0x00007fe83dfd461a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3461a) #7 0x00007fe83ae1cde7 llvm::raw_ostream::operator<<(llvm::StringRef) /tmp/_nbuild/../include/llvm/Support/raw_ostream.h:169:7 #8 0x00007fe83ae1cde7 llvm::raw_ostream::operator<<(char const*) /tmp/_nbuild/../include/llvm/Support/raw_ostream.h:179:0 #9 0x00007fe83ae1cde7 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAG.cpp:7282:0 #10 0x00007fe83ae1ccf1 llvm::iterator_adaptor_base<llvm::SDNode::value_op_iterator, llvm::SDUse*, std::random_access_iterator_tag, llvm::SDValue, long, llvm::SDNode::value_op_iterator*, llvm::SDNode::value_op_iterator*, std::iterator_traits<llvm::SDUse*> >::operator++() /tmp/_nbuild/../include/llvm/ADT/iterator.h:211:5 #11 0x00007fe83ae1ccf1 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAG.cpp:7286:0 #12 0x00007fe83ae1ccf1 llvm::iterator_adaptor_base<llvm::SDNode::value_op_iterator, llvm::SDUse*, std::random_access_iterator_tag, llvm::SDValue, long, llvm::SDNode::value_op_iterator*, llvm::SDNode::value_op_iterator*, std::iterator_traits<llvm::SDUse*> >::operator++() /tmp/_nbuild/../include/llvm/ADT/iterator.h:211:5 #13 0x00007fe83ae1ccf1 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAG.cpp:7286:0 #14 0x00007fe83ae1ccf1 llvm::iterator_adaptor_base<llvm::SDNode::value_op_iterator, llvm::SDUse*, std::random_access_iterator_tag, llvm::SDValue, long, llvm::SDNode::value_op_iterator*, llvm::SDNode::value_op_iterator*, std::iterator_traits<llvm::SDUse*> >::operator++() /tmp/_nbuild/../include/llvm/ADT/iterator.h:211:5 #15 0x00007fe83ae1ccf1 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAG.cpp:7286:0 #16 0x00007fe83ae1ccf1 llvm::iterator_adaptor_base<llvm::SDNode::value_op_iterator, llvm::SDUse*, std::random_access_iterator_tag, llvm::SDValue, long, llvm::SDNode::value_op_iterator*, llvm::SDNode::value_op_iterator*, std::iterator_traits<llvm::SDUse*> >::operator++() /tmp/_nbuild/../include/llvm/ADT/iterator.h:211:5 #17 0x00007fe83ae1ccf1 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAG.cpp:7286:0 #18 0x00007fe83ae1ccf1 llvm::iterator_adaptor_base<llvm::SDNode::value_op_iterator, llvm::SDUse*, std::random_access_iterator_tag, llvm::SDValue, long, llvm::SDNode::value_op_iterator*, llvm::SDNode::value_op_iterator*, std::iterator_traits<llvm::SDUse*> >::operator++() /tmp/_nbuild/../include/llvm/ADT/iterator.h:211:5 #19 0x00007fe83ae1ccf1 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAG.cpp:7286:0 #20 0x00007fe83ae1ccf1 llvm::iterator_adaptor_base<llvm::SDNode::value_op_iterator, llvm::SDUse*, std::random_access_iterator_tag, llvm::SDValue, long, llvm::SDNode::value_op_iterator*, llvm::SDNode::value_op_iterator*, std::iterator_traits<llvm::SDUse*> >::operator++() /tmp/_nbuild/../include/llvm/ADT/iterator.h:211:5 #21 0x00007fe83ae1ccf1 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAG.cpp:7286:0 #22 0x00007fe83ae1ccf1 llvm::iterator_adaptor_base<llvm::SDNode::value_op_iterator, llvm::SDUse*, std::random_access_iterator_tag, llvm::SDValue, long, llvm::SDNode::value_op_iterator*, llvm::SDNode::value_op_iterator*, std::iterator_traits<llvm::SDUse*> >::operator++() /tmp/_nbuild/../include/llvm/ADT/iterator.h:211:5 #23 0x00007fe83ae1ccf1 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAG.cpp:7286:0 #24 0x00007fe83ae1aaaf llvm::SmallPtrSetImplBase::isSmall() const /tmp/_nbuild/../include/llvm/ADT/SmallPtrSet.h:170:33 #25 0x00007fe83ae1aaaf llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase() /tmp/_nbuild/../include/llvm/ADT/SmallPtrSet.h:81:0 #26 0x00007fe83ae1aaaf llvm::checkForCycles(llvm::SDNode const*, llvm::SelectionDAG const*, bool) /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAG.cpp:7307:0 #27 0x00007fe83ae1a8f9 llvm::SelectionDAG::AssignTopologicalOrder() /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAG.cpp:6605:7 #28 0x00007fe83ae2e4e3 llvm::SelectionDAGISel::DoInstructionSelection() /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:927:13 #29 0x00007fe83ae2dbb7 llvm::TimeRegion::~TimeRegion() /tmp/_nbuild/../include/llvm/Support/Timer.h:148:9 #30 0x00007fe83ae2dbb7 llvm::SelectionDAGISel::CodeGenAndEmitDAG() /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:852:0 #31 0x00007fe83ae2c29d llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1482:7 #32 0x00007fe83ae28bd6 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /tmp/_nbuild/../lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:505:36 #33 0x00007fe8450e32b1 (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /tmp/_nbuild/../lib/Target/X86/X86ISelDAGToDAG.cpp:176:7 #34 0x00007fe84193fad5 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /tmp/_nbuild/../lib/CodeGen/MachineFunctionPass.cpp:60:13 #35 0x00007fe84038b804 llvm::FPPassManager::runOnFunction(llvm::Function&) /tmp/_nbuild/../lib/IR/LegacyPassManager.cpp:1526:23 #36 0x00007fe84038ba4b llvm::FPPassManager::runOnModule(llvm::Module&) /tmp/_nbuild/../lib/IR/LegacyPassManager.cpp:1547:13 #37 0x00007fe84038be3a (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /tmp/_nbuild/../lib/IR/LegacyPassManager.cpp:1603:23 #38 0x00007fe84038be3a llvm::legacy::PassManagerImpl::run(llvm::Module&) /tmp/_nbuild/../lib/IR/LegacyPassManager.cpp:1706:0 #39 0x00007fe846109bfa (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) /tmp/_nbuild/../tools/clang/lib/CodeGen/BackendUtil.cpp:740:3 #40 0x00007fe846109bfa clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) /tmp/_nbuild/../tools/clang/lib/CodeGen/BackendUtil.cpp:751:0 #41 0x00007fe846310ce5 std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >::~unique_ptr() /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/bits/unique_ptr.h:235:6 #42 0x00007fe846310ce5 clang::CodeGenAction::ExecuteAction() /tmp/_nbuild/../tools/clang/lib/CodeGen/CodeGenAction.cpp:846:0 #43 0x00007fe845a833a5 clang::FrontendAction::Execute() /tmp/_nbuild/../tools/clang/lib/Frontend/FrontendAction.cpp:461:7 #44 0x00007fe845a43061 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /tmp/_nbuild/../tools/clang/lib/Frontend/CompilerInstance.cpp:868:7 #45 0x00007fe8457caa43 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /tmp/_nbuild/../tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:241:18 #46 0x000000000040ec69 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /tmp/_nbuild/../tools/clang/tools/driver/cc1_main.cpp:118:13 #47 0x000000000040d746 ExecuteCC1Tool(llvm::ArrayRef<char const*>, llvm::StringRef) /tmp/_nbuild/../tools/clang/tools/driver/driver.cpp:301:12 #48 0x000000000040d746 main /tmp/_nbuild/../tools/clang/tools/driver/driver.cpp:382:0 #49 0x00007fe83dfc0700 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x20700) #50 0x000000000040a8f9 _start (/tmp/_nbuild/bin/clang-3.8+0x40a8f9) Stack dump: 0. Program arguments: /tmp/_nbuild/bin/clang-3.8 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name s.ll -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -coverage-file /tmp/_nbuild/s.ll -resource-dir /tmp/_nbuild/bin/../lib/clang/3.9.1 -fdebug-compilation-dir /tmp/_nbuild/ -ferror-limit 19 -fmessage-length 177 -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -o s.o -x ir s.ll -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs