<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/127977>127977</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
SPIR-V: Assertion failure / Invalid IR emitting intrinsic for insertvalue with poison
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
maleadt
</td>
</tr>
</table>
<pre>
Reduced MWE:
```llvm
define fastcc void @julia_ArgumentError_20870() {
top:
%0 = insertvalue [1 x ptr] zeroinitializer, ptr poison, 0
ret void
}
```
With `llc` from main with assertions enabled:
```
llc: /home/tim/Julia/src/llvm-project/llvm/lib/IR/Instructions.cpp:730: void llvm::CallInst::init(llvm::FunctionType*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::ArrayRef<llvm::OperandBundleDefT<llvm::Value*> >, const llvm::Twine&): Assertion `(i >= FTy->getNumParams() || FTy->getParamType(i) == Args[i]->getType()) && "Calling a function with a bad signature!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/tim/Julia/src/llvm-project/build/dev/bin/llc reduced.ll
1. Running pass 'SPIRV emit intrinsics' on module 'reduced.ll'.
#0 0x0000624486a8309a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/tim/Julia/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:804:22
#1 0x0000624486a834ad PrintStackTraceSignalHandler(void*) /home/tim/Julia/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:880:1
#2 0x0000624486a8093f llvm::sys::RunSignalHandlers() /home/tim/Julia/src/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#3 0x0000624486a8294e SignalHandler(int, siginfo_t*, void*) /home/tim/Julia/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:418:13
#4 0x000077d42f353cd0 (/usr/lib/libc.so.6+0x3dcd0)
#5 0x000077d42f3ad624 __pthread_kill_implementation /usr/src/debug/glibc/glibc/nptl/pthread_kill.c:44:76
#6 0x000077d42f353ba0 raise /usr/src/debug/glibc/glibc/signal/../sysdeps/posix/raise.c:27:6
#7 0x000077d42f33b582 abort /usr/src/debug/glibc/glibc/stdlib/abort.c:81:3
#8 0x000077d42f33b4eb __assert_perror_fail /usr/src/debug/glibc/glibc/assert/assert-perr.c:31:1
#9 0x0000624485bc96ff llvm::CallInst::init(llvm::FunctionType*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::ArrayRef<llvm::OperandBundleDefT<llvm::Value*>>, llvm::Twine const&) /home/tim/Julia/src/llvm-project/llvm/lib/IR/Instructions.cpp:729:3
#10 0x0000624481b8d927 llvm::CallInst::CallInst(llvm::FunctionType*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::ArrayRef<llvm::OperandBundleDefT<llvm::Value*>>, llvm::Twine const&, llvm::User::AllocInfo, llvm::InsertPosition) /home/tim/Julia/src/llvm-project/llvm/include/llvm/IR/Instructions.h:1660:7
#11 0x0000624481b8d79c llvm::CallInst::Create(llvm::FunctionType*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::ArrayRef<llvm::OperandBundleDefT<llvm::Value*>>, llvm::Twine const&, llvm::InsertPosition) /home/tim/Julia/src/llvm-project/llvm/include/llvm/IR/Instructions.h:1550:77
#12 0x0000624481b8eb0d llvm::IRBuilderBase::CreateCall(llvm::FunctionType*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::ArrayRef<llvm::OperandBundleDefT<llvm::Value*>>, llvm::Twine const&, llvm::MDNode*) /home/tim/Julia/src/llvm-project/llvm/include/llvm/IR/IRBuilder.h:2463:36
#13 0x0000624482242254 llvm::IRBuilderBase::CreateCall(llvm::FunctionCallee, llvm::ArrayRef<llvm::Value*>, llvm::ArrayRef<llvm::OperandBundleDefT<llvm::Value*>>, llvm::Twine const&, llvm::MDNode*) /home/tim/Julia/src/llvm-project/llvm/include/llvm/IR/IRBuilder.h:2480:0
#14 0x0000624485ba3f95 llvm::IRBuilderBase::createCallHelper(llvm::Function*, llvm::ArrayRef<llvm::Value*>, llvm::Twine const&, llvm::FMFSource, llvm::ArrayRef<llvm::OperandBundleDefT<llvm::Value*>>) /home/tim/Julia/src/llvm-project/llvm/lib/IR/IRBuilder.cpp:83:28
#15 0x0000624485ba84aa llvm::IRBuilderBase::CreateIntrinsic(unsigned int, llvm::ArrayRef<llvm::Type*>, llvm::ArrayRef<llvm::Value*>, llvm::FMFSource, llvm::Twine const&) /home/tim/Julia/src/llvm-project/llvm/lib/IR/IRBuilder.cpp:907:26
#16 0x00006244838b1e0a (anonymous namespace)::SPIRVEmitIntrinsics::visitInsertValueInst(llvm::InsertValueInst&) /home/tim/Julia/src/llvm-project/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp:1783:24
```
Without assertions, it generates invalid IR:
```
Call parameter type does not match function signature!
%2 = call i32 @llvm.spv.track.constant.i32.i32(i32 undef, metadata i32 undef)
ptr %4 = call i32 (i32, ptr, ...) @llvm.spv.insertv.p0(i32 %1, i32 %2, i32 %3)
in function julia_ArgumentError_20870
LLVM ERROR: Broken function found, compilation aborted!
```
The IR passes validation and is otherwise accepted by other back-ends.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWE9v47YS_zT0hYhAUZIlHXxw4hj1w24bOOn2aFDi2GYjkQJJJZt--oeh5MR2Nn3ppu1h8YDsWhLJ-fP7DYecEc6pnQaYkeySZIuJ6P3e2FkrGhDSTyojn2ZrkH0Nkn7-7Zokc8LC35QNf03z0BI2l7BVGuhWOF_X9MEoSUnKfu8bJTZzu-tb0P7aWmM3nBU5I7wgvKQkvyRs7k03yKWU8IxRkiyo0g6sfxBND5RklzH9SjtvSbagf4A1SiuvRKP-AEv4FY7QzihnNL6xIMmCD2agrfni2OLBgd-U39Ngf02mjG6taWkrlKaPOCAcqldGOwpaVA3I154TNsfFyZwSvtybFghfetUSvvwPuk340tma8CUidNFZ8zvUfnzFH1URvlyt8T_tvO3roC6qOwQjTxgKDjiGBcmcJPMr0TQ4eXhDEAgvXoaXvQ5C7p46IHyOWLwMfkEoX32dWyue1rAlydU3pibX75j9SwdWaHnZa9nAArZ3b8mio7zaaOePpN49Kg2ETwkv0ef5AXpkh_BChXXJgi7vni5Icr0D_3Pf3ggrWvccRlckvzqaEEYHGAoVZiQLFDG3O0eyS0WyxThznIS6cRpaMaWEc4Ra6R0VdDuiOgYGrYSkuGeE7y0QHhPOCc_pVqgGZETY_ObT9fz2mrq-apXHBf2OWuiM9dQbuve-c-g4XxK-3Cm_76uoNu1RZJzGi3KuB0f4kgotqdJ100ugfg-0tsLtaSXqe29FDaj71ov6nsq-HXcUiwgrb6zZWdFSMe5D95djtupVIwlfSnjAN6XDlJraITNETUPYPEZd615rxK0TzlHC89ub1foLBURCaW-Vdqp2iJfRtDWybwBnHcnhOfpBCU8YZV8ZY2zK07SYiiJhpTgKG_fkhocbq7QPjt8hDCdbworHjXHegmgDt1doxcD0927Z275DLglf_qrVV_yAwdC4SGlMBgVLSTLnfHQiPnciFZKeWTwI-EngBrKEFyFt4U79J80sMMHEo5X8zEpWJttvQb3u9YmxzxvwbzDzYN-QAGOWIYxsNDA5M5CXKdBz3AK1V7g5ld6ajR-z3b8BZxoXaHQympuO5ua5TPk2yZJaMhqwWvbOPgttVFVHzkRTwi_Z10TWkmEiGmRkpzKEnPKUbjad31sQcnOvmmaj2q4B3NJiSJgH8YM_Eqp-h0kG9Rz96s43hC-PJUXBCYzcfDrqn577UAlGrVAO3qsnZEnUFEX49uQkdJjIOuMChEFY0MxzkswPivNTxUmVFZyKCvPnexV7OQAcVgUNRUyS-YGe4lxDChXdbIZDf9NBuKdgQn-vwmHl88MFighqk_hol5XHQZxVdTndbn-Y0_2VuHCsD4f9cLj_E9ekcGVAWjHVnhwYcVXIkudv4vv89iNhfDz2qwM7Km0aU6_01pxOWIUr9o1xCl3-XoLGC8nLh9dc7XEPTKd44OQjVfE5VXlZv02VBeHhhyXq3-UhywIPByL4GRFQseOKY7W-xKsf2Evh4JgNZOiHZeTz4mcj4QN3hjfIOIAZmODpNMHkNR2ZOLnicJ5ynqUfYgIHAP4P-THk4dbLRsTT0_NYJNsy-3PE62fEf4KmC5fO17h_MM7_DKXl5-Wt6W39Hlb_Gk8fP52fkR6O5gKDmxcj1NkZ1EUqxHuCe3WoGQkveh1aVZKO9_z_4f8hEb0rqN9k4w3E__7LzRl8JcMrMT8kh-kxfklRxcAEFhRCG_3Umt5RLVpwXah_y8HGUHpft8qvXgrvMPCgHH7EUyf4_eoa9Grsgx7eCbuDUOOhSYffU9MOdV8-BE767Y6d6f1Rby7U857uQIMVHhxV-kE0StLV-pvtOty4tBNWtODBUv_UAZUGHNXG01b4ev_S7Tlp8YytSR5akzVKUQmnJA3dz8h1D5G3or6PQkAI7SOVcPyHRWnCaa8lbNHYFryQwgt69DXUe523QUN6piGsH1uc-BNhKVWeaB47pVHHRm2EZ3FAZnjmR8_JoE7pFz_fbtGy-adPXz7T6_X6F4STXlpzD0crt6bXcmjotZ1qhhI0VFwgB9DOCLzbA12tQ2sIHA1MjYu0pMpR4_dgH7HAFHUNnQdJq6fha-hyXYCWLprIWSLLpBQTmMV5yliapHk62c9EzNI8L7eQs1TKPBEx43k8LTnEZZmJ7UTNOOMZ45yxkqdJGjHO8jKreV5DnscsJSmDVqgmCuAau5uE5tss5nmZ55NGVNC40CnnXMMjDaOEc5ItJnYWdkDV7xyyo5x3L2K88g3MMOovvpz2OLHK7G0oqenqOXpDw8wrvXtpmtGtsSdd8dCOHLrek942s-9vLI7uPcz4fwMAAP__l6pfBQ">