-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Closed
Bug
Copy link
Description
Reproducer: https://godbolt.org/z/WxbKq6TKj
Testcase:
define <16 x i16> @func_1(<2 x i32> %0, <2 x i32> %1, <2 x i32> %2) {
entry:
%vecext3 = extractelement <2 x i32> %0, i32 0
%conv4 = trunc i32 %vecext3 to i16
%vecinit5 = insertelement <16 x i16> <i16 0, i16 poison, i16 poison, i16 poison, i16 poison, i16 poison, i16 poison, i16 poison, i16 poison, i16 poison, i16 poison, i16 poison, i16 poison, i16 poison, i16 poison, i16 poison>, i16 %conv4, i32 1
%vecext7 = extractelement <2 x i32> %1, i32 0
%conv8 = trunc i32 %vecext7 to i16
%vecinit9 = insertelement <16 x i16> %vecinit5, i16 %conv8, i32 2
%vecext59 = extractelement <2 x i32> %2, i32 0
%conv60 = trunc i32 %vecext59 to i16
%vecinit61 = insertelement <16 x i16> %vecinit9, i16 %conv60, i32 0
ret <16 x i16> %vecinit61
}
Output:
llc: /root/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:8274: llvm::SDValue llvm::SelectionDAG::getNode(unsigned int, const llvm::SDLoc&, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDNodeFlags): Assertion `VT.getVectorElementType() == N2VT.getVectorElementType() && "Insert subvector VTs must have the same element type!"' 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 -march=riscv64 -mattr=+v <source>
1. Running pass 'Function Pass Manager' on module '<source>'.
2. Running pass 'RISC-V DAG->DAG Pattern Instruction Selection' on function '@func_1'
#0 0x00000000040e8b28 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x40e8b28)
#1 0x00000000040e59d4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x000078d135242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x000078d1352969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x000078d135242476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x000078d1352287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x000078d13522871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#7 0x000078d135239e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#8 0x0000000003e4dd77 llvm::SelectionDAG::getNode(unsigned int, llvm::SDLoc const&, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDNodeFlags) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3e4dd77)
#9 0x0000000001dd3768 llvm::SelectionDAG::getInsertSubvector(llvm::SDLoc const&, llvm::SDValue, llvm::SDValue, unsigned int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x1dd3768)
#10 0x0000000001e4a9ee lowerBUILD_VECTOR(llvm::SDValue, llvm::SelectionDAG&, llvm::RISCVSubtarget const&) RISCVISelLowering.cpp:0:0
#11 0x0000000001e4cecc llvm::RISCVTargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x1e4cecc)
#12 0x0000000003d60fd8 (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) (.part.0) LegalizeDAG.cpp:0:0
#13 0x0000000003d6462e llvm::SelectionDAG::Legalize() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3d6462e)
#14 0x0000000003e8232d llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3e8232d)
#15 0x0000000003e85afd llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3e85afd)
#16 0x0000000003e870e5 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3e870e5)
#17 0x0000000003e728df llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3e728df)
#18 0x0000000002fff4b9 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#19 0x0000000003636ff8 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3636ff8)
#20 0x0000000003637231 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3637231)
#21 0x0000000003637a9f llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3637a9f)
#22 0x00000000008eb50d compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#23 0x00000000007bc706 main (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x7bc706)
#24 0x000078d135229d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#25 0x000078d135229e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#26 0x00000000008e1965 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x8e1965)
Program terminated with signal: SIGSEGV