[llvm-bugs] [Bug 30562] New: Selection DAG error: Detected cycle in SelectionDAG

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Sep 29 07:09:14 PDT 2016


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: unassignedbugs at nondot.org
          Reporter: serge.guelton at telecom-bretagne.eu
                CC: llvm-bugs at 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160929/7292d3b9/attachment-0001.html>


More information about the llvm-bugs mailing list