[PATCH] D96345: [DAG] Fold shuffle(bop(shuffle(x,y),shuffle(z,w)),bop(shuffle(a,b),shuffle(c,d)))

Sterling Augustine via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 16 12:47:06 PST 2021


saugustine added a comment.

Unfortunately, this commit causes a segfault with the test case below. I'm intend to revert it shortly.

  typedef long b __attribute__((__vector_size__(16)));
  b *d;
  b e;
  b __attribute__((__always_inline__)) c(b h, b i) {
    return (__attribute__((__vector_size__(8 * sizeof(short)))) short)h + i;
  }
  j() {
    b k, l, m, n, o[6], p, q;
    m = d[5];
    b r = m;
    b s = f(r, 8);
    q = s;
    l = d[1];
    p = l;
    t(q);
    n = c(m, l);
    o[1] = c(s, f(p, 8));
    k = __builtin_shufflevector(n, o[1], 0, 2);
    e = __builtin_ia32_psrlwi128(k, j);
  }
  
  ./bin/clang -cc1 -triple x86_64-grtev4-linux-gnu -emit-obj -O1 -std=c99 test.c

PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: ./bin/clang -cc1 -triple x86_64-grtev4-linux-gnu -emit-obj -O1 -std=c99 /usr/local/google/home/saugustine/tmp/test.c

1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module '.../tmp/test.c'.
4. Running pass 'X86 DAG->DAG Instruction Selection' on function '@j' #0 0x00000000048d250a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) .../llvm-new/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:11 #1 0x00000000048d26db PrintStackTraceSignalHandler(void*) .../llvm-new/llvm-project/llvm/lib/Support/Unix/Signals.inc:632:1 #2 0x00000000048d0ccb llvm::sys::RunSignalHandlers() .../llvm-new/llvm-project/llvm/lib/Support/Signals.cpp:70:5 #3 0x00000000048d2e51 SignalHandler(int) .../llvm-new/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1 #4 0x00007f522cedf140 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14140) #5 0x0000000001592ec8 llvm::SDNode::getValueType(unsigned int) const .../llvm-new/llvm-project/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:959:5 #6 0x00000000015930ab llvm::SDValue::getValueType() const .../llvm-new/llvm-project/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1114:16 #7 0x0000000005fe59a6 llvm::SelectionDAG::getVectorShuffle(llvm::EVT, llvm::SDLoc const&, llvm::SDValue, llvm::SDValue, llvm::ArrayRef<int>) .../llvm-new/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1731:3 #8 0x0000000005e9e6c6 (anonymous namespace)::DAGCombiner::visitVECTOR_SHUFFLE(llvm::SDNode*) .../llvm-new/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:21125:19 #9 0x0000000005e4d240 (anonymous namespace)::DAGCombiner::visit(llvm::SDNode*) .../llvm-new/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1716:40

#10 0x0000000005e4c298 (anonymous namespace)::DAGCombiner::combine(llvm::SDNode*) .../llvm-new/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1747:10
#11 0x0000000005e4b880 (anonymous namespace)::DAGCombiner::Run(llvm::CombineLevel) .../llvm-new/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1555:18
#12 0x0000000005e4b14f llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AAResults*, llvm::CodeGenOpt::Level) .../llvm-new/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:22906:3
#13 0x000000000604f24e llvm::SelectionDAGISel::CodeGenAndEmitDAG() .../llvm-new/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:795:3
#14 0x000000000604edcf llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, bool&) .../llvm-new/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:711:1
#15 0x000000000604e832 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) .../llvm-new/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:0:7
#16 0x000000000604bb9f llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) .../llvm-new/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:505:3
#17 0x0000000002bc4ae1 (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) .../llvm-new/llvm-project/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:193:7
#18 0x0000000003676747 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) .../llvm-new/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:72:8
#19 0x0000000003cec2fc llvm::FPPassManager::runOnFunction(llvm::Function&) .../llvm-new/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1434:23
#20 0x0000000003cf1475 llvm::FPPassManager::runOnModule(llvm::Module&) .../llvm-new/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1480:16
#21 0x0000000003ceccc4 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) .../llvm-new/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1549:23
#22 0x0000000003cec7e8 llvm::legacy::PassManagerImpl::run(llvm::Module&) .../llvm-new/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:540:16
#23 0x0000000003cf1781 llvm::legacy::PassManager::run(llvm::Module&) .../llvm-new/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1676:3
#24 0x0000000004cf67b5 (anonymous namespace)::EmitAssemblyHelper::EmitAssemblyWithNewPassManager(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) .../llvm-new/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1439:3
#25 0x0000000004cf3f07 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, 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> >) .../llvm-new/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1601:5
#26 0x00000000061acec9 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) .../llvm-new/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:344:7
#27 0x0000000007f5fd2e clang::ParseAST(clang::Sema&, bool, bool) .../llvm-new/llvm-project/clang/lib/Parse/ParseAST.cpp:178:12
#28 0x00000000056d13a2 clang::ASTFrontendAction::ExecuteAction() .../llvm-new/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1058:1
#29 0x00000000061a8869 clang::CodeGenAction::ExecuteAction() .../llvm-new/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1083:5
#30 0x00000000056d0d68 clang::FrontendAction::Execute() .../llvm-new/llvm-project/clang/lib/Frontend/FrontendAction.cpp:953:7
#31 0x000000000560a028 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) .../llvm-new/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:949:23
#32 0x000000000588dbb6 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) .../llvm-new/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:278:8
#33 0x000000000142cf0d cc1_main(llvm::ArrayRef<char const*>, char const*, void*) .../llvm-new/llvm-project/clang/tools/driver/cc1_main.cpp:246:13
#34 0x000000000141f759 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) .../llvm-new/llvm-project/clang/tools/driver/driver.cpp:330:5
#35 0x000000000141e8ee main .../llvm-new/llvm-project/clang/tools/driver/driver.cpp:407:5
#36 0x00007f522c9a2d0a __libc_start_main ./csu/../csu/libc-start.c:308:16
#37 0x000000000141e09a _start (./bin/clang+0x141e09a)
Segmentation fault


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96345/new/

https://reviews.llvm.org/D96345



More information about the llvm-commits mailing list