Issue 175297
Summary [PowerPC] Assertion "Cannot use this version of ReplaceAllUsesWith!" failed.
Labels backend:PowerPC, crash-on-valid
Assignees
Reporter XChy
    Reproducer: https://godbolt.org/z/h1TedPnYT
Testcase:
```llvm
target datalayout = "e-m:e-Fn32-i64:64-i128:128-n32:64-S128-v256:256:256-v512:512:512"
target triple = "powerpc64le-unknown-linux-musl"

define <32 x i16> @backsmith_pure_7(<8 x i8> %conv) {
entry:
  %0 = bitcast <8 x i8> %conv to i64
  %vecinit9 = insertelement <2 x i64> splat (i64 1), i64 %0, i64 1
 %shuffle = shufflevector <2 x i64> %vecinit9, <2 x i64> <i64 1, i64 0>, <32 x i32> <i32 2, i32 3, i32 2, i32 3, i32 2, i32 1, i32 0, i32 3, i32 0, i32 0, i32 3, i32 2, i32 1, i32 2, i32 1, i32 3, i32 0, i32 3, i32 3, i32 1, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2, i32 2, i32 2, i32 0, i32 2, i32 3, i32 1>
  %conv11 = trunc <32 x i64> %shuffle to <32 x i16>
  ret <32 x i16> %conv11
}
```

Dump:
```
llc: /root/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:12301: void llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDNode*, llvm::SDNode*): Assertion `(!From->hasAnyUseOfValue(i) || From->getValueType(i) == To->getValueType(i)) && "Cannot use this version of ReplaceAllUsesWith!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0.	Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/llc -o /app/output.s -x86-asm-syntax=intel -O1 <source>
1.	Running pass 'Function Pass Manager' on module '<source>'.
2.	Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function '@backsmith_pure_7'
 #0 0x000000000425cf18 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x425cf18)
 #1 0x0000000004259dc4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #2 0x0000774b93842520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x0000774b938969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x0000774b93842476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x0000774b938287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x0000774b9382871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #7 0x0000774b93839e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #8 0x0000000003fcb51f llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDNode*, llvm::SDNode*) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3fcb51f)
 #9 0x0000000003fe27a4 llvm::SelectionDAGISel::MorphNode(llvm::SDNode*, unsigned int, llvm::SDVTList, llvm::ArrayRef<llvm::SDValue>, unsigned int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3fe27a4)
#10 0x0000000003fea109 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3fea109)
#11 0x0000000001c8d388 (anonymous namespace)::PPCDAGToDAGISel::Select(llvm::SDNode*) PPCISelDAGToDAG.cpp:0:0
#12 0x0000000003fdeaeb llvm::SelectionDAGISel::DoInstructionSelection() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3fdeaeb)
#13 0x0000000003fee2d8 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3fee2d8)
#14 0x0000000003ff1268 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3ff1268)
#15 0x0000000003ff2d7c llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3ff2d7c)
#16 0x0000000001c94b27 (anonymous namespace)::PPCDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) PPCISelDAGToDAG.cpp:0:0
#17 0x0000000003fde2df llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3fde2df)
#18 0x000000000312cac9 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#19 0x00000000037814d6 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x37814d6)
#20 0x0000000003781881 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3781881)
#21 0x00000000037820ef llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x37820ef)
#22 0x0000000000904a1d compileModule(char**, llvm::SmallVectorImpl<llvm::PassPlugin>&, llvm::LLVMContext&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&) llc.cpp:0:0
#23 0x00000000007cd41c main (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x7cd41c)
#24 0x0000774b93829d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#25 0x0000774b93829e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#26 0x00000000008f9775 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x8f9775)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to