<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/87323>87323</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[RISC-V] Vector return types result in 'Assertion `CurIdx < AllocatedPhysRegs.size() && "Index out of range"' failed.'
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:RISC-V
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hvdijk
</td>
</tr>
</table>
<pre>
Please consider this minimized test (thanks `bugpoint`):
```llvm
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-unknown-elf"
declare <4 x float> @f()
define void @g() {
entry:
%0 = tail call <4 x float> @f()
unreachable
}
```
When running `llc -mattr=+v` on this, it produces:
```
llc: /home/harald/llvm-project/main/llvm/lib/Target/RISCV/RISCVISelLowering.cpp:21182: llvm::MCPhysReg llvm::RVVArgDispatcher::getNextPhysReg(): Assertion `CurIdx < AllocatedPhysRegs.size() && "Index out of range"' 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/harald/llvm-project/main/install/aarch64-linux/bin/llc -mattr=+v test.ll
1. Running pass 'Function Pass Manager' on module 'test.ll'.
2. Running pass 'RISC-V DAG->DAG Pattern Instruction Selection' on function '@g'
#0 0x0000beb8f970e9d8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x389e9d8)
#1 0x0000beb8f970c100 llvm::sys::RunSignalHandlers() (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x389c100)
#2 0x0000beb8f970c258 SignalHandler(int) Signals.cpp:0:0
#3 0x0000f34bf7b3a8f8 (linux-vdso.so.1+0x8f8)
#4 0x0000f34bf74c7628 __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x0000f34bf747cb3c raise ./signal/../sysdeps/posix/raise.c:27:6
#6 0x0000f34bf7467e00 abort ./stdlib/abort.c:81:7
#7 0x0000f34bf7475cbc __assert_fail_base ./assert/assert.c:91:7
#8 0x0000f34bf7475d2c (/lib/aarch64-linux-gnu/libc.so.6+0x35d2c)
#9 0x0000beb8f7992be8 (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x1b22be8)
#10 0x0000beb8f79d5f14 (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x1b65f14)
#11 0x0000beb8f79d60b4 llvm::RISCVTargetLowering::CanLowerReturn(unsigned int, llvm::MachineFunction&, bool, llvm::SmallVectorImpl<llvm::ISD::OutputArg> const&, llvm::LLVMContext&) const (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x1b660b4)
#12 0x0000beb8f9432590 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x35c2590)
#13 0x0000beb8f943e124 llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x35ce124)
#14 0x0000beb8f9454a3c llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, bool, llvm::BasicBlock const*) (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x35e4a3c)
#15 0x0000beb8f9478fe8 llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x3608fe8)
#16 0x0000beb8f94f8310 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true>, false, true>, bool&) (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x3688310)
#17 0x0000beb8f94f9350 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x3689350)
#18 0x0000beb8f94fac98 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#19 0x0000beb8f87a9958 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#20 0x0000beb8f8d546b4 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x2ee46b4)
#21 0x0000beb8f8d54a8c llvm::FPPassManager::runOnModule(llvm::Module&) (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x2ee4a8c)
#22 0x0000beb8f8d55630 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x2ee5630)
#23 0x0000beb8f6864b94 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#24 0x0000beb8f678d99c main (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x91d99c)
#25 0x0000f34bf74684c4 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#26 0x0000f34bf7468598 call_init ./csu/../csu/libc-start.c:128:20
#27 0x0000f34bf7468598 __libc_start_main ./csu/../csu/libc-start.c:347:5
#28 0x0000beb8f685c9b0 _start (/home/harald/llvm-project/main/install/aarch64-linux/bin/llc+0x9ec9b0)
Aborted (core dumped)
```
This happens as of #79096; @4vtomat, could you take a look?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWV1v47YS_TXMC2FDor4f8uDY670Bdm-DZJH7aFDUyGJDkwJJZZP--gtS8gcdb7st6qLAbiRR5PCcM0NyRqbG8K0EuEXZHcpWN3SwndK33WvDf325qVXzfvsggBrATEnDG9DYdtzgHZd8x3-DBlswFiNS2o7KF4NRHtXDtldcWpRHiFQoWaBohaKFe_T_hHjdjU2W6i1Y3FBLBX1Xg8UoWWFECMx2KFnArEfJIk_9nxk_3MSkRMkiJuVMJmRse3JthARmrea9gL1JzQ17zdPZIF-k-i4PVxDtYeD4twEmqHYDlyl-w61Q1KLkE0Zp1CI3TRX2brkE_Kp443psxx4YFXfje5BWvx9EwBiRLPKYLOUCMyrEH06EB6mBso7WAqapi9WZqOPj_zqQWA9ScrnFXmqGZztqrUbJCpG7V5RHWEnvQ0SWmFvca9UMDMxHP42PQjCULDAi607twF2opqJBZO38OOu1-hWYRWS9o1xOre7Ca0TW37wnEFk_3j8tn_fX-ycQX9R30Fxu56x3TiZxXDpXYj88WaBk8XX50L2bR9ietD0-Py_0dsVNTy3rQI-tW7D_hTc7dZ-USxZ4YQxoy5V0UiwHfd-8Oa3xQgjFqIVmGmHmhv8Ge8eRHJHcRcy9bOANu6hULdZUbsEFCilwS7mAZj7q8_Dl0-LpEzZDveMWU1wPW6yhV9piq3Bnbe-lJWtE1ltuu6GeM7U7ESpUkRszgEFkjalsMJdMDA1g2wFmmpoO15S9WE0ZTNM_WcpecDPs-oMDozmKqgettpruMNXbYQfSmj_lRC6NpUIgsqZUsy5PZ4LL4Q2RdT05-Syu_DYwF2JEEDsEj1MY9tQYjEixHiTzznhwDV-ppFvQTk4l8U41g1uqpNjbIcVEkFyy5cJo9oxXi88zlHxaLT7jB2otaInvpbF6GCd6AgH-bpql3SNApBiXajEtMESSCEdvURRFNdRlWxURVE15Ennm3Yw3D5pL61X_5tyASHnspOn3jTJWA935MFpitw36oCr_Tu0RuYvekrJyGI-7BCJJfEaCxVF0icTjIJ_4VlLxHyobAdocgv8qOB2MACc5x0myEgeIECkn7cZmM20Ukf9_MJRMhtokrduiTmjZlo6FhzJ7bYyaGzWPPZCyDcVKg7EpK3JS4s2mt50G2mxeuBAbvusFuPVDfeDMEVnL3jrSp93mbotM3fFU5Ef7WWi_YHXCsKbcgLdjPC9E1nP_9G4a6N3C75XhTkXf01smhTvkjobz0HBeQBRhWrstx5uyzbj7-iZvoYwdtqOF4gxaxmqGNxvqN8yN2982NZ1wjo2HG2-vOrNXnttrCJuCaYJyGiKzrRzGN8x5Jx_DxI0J_FOdBklRVaSG8ioRGtfE2T4e7CSJo3DyJmvj9EqT5852MHl8Nnke1enpKegO0fFo3R-j44sllb7hEeygJSLlIH1614z70PL0dKWs4xL2m_K0XdVKibDf044K8QzMKn2_6wVKlsd390-r8eaXwfaDXeity15comgne8e-X748f10qaeFtfFeN_a4lqVMskDTccdKEZNXpznhJTf-0pEJ8U8Euf1l5cUhp7mWrrs4xyZijEHBMzjhCTE7D5nAcrhaf7wYumn3-JBzwe_mqXnyG-Ze4nvr6jhrO7oRiL_tgWFztcMmYYxnIkIYyZClN2M_I8CN_u6a7fQn0MbKfVs9UDHC6fD4uo39UEnCMA0myUJKibKH8GUleueE2EOM0vzrqcSUmeeSABkzykElbuq36MhNXZpy2Hn0QMOKCG7vhFjS1Sm--b2rusuXleY8GXMU2tkjVwEb1bqKw64k8LgCsHgOjpcL4G1cmHl4kn4J3J23_bnRjeF_R7aXzauD24sztVZL9rNsXfvVOnjeB6w8lyfUjuXSIA0rlGSXKqh-tySMlPchf5Iezu_z9c91zmvdU23nkM-oz0x9Ta4cvSL_KglZVVv44gXBF3QnEi9h-F9QFexdxkSAzK5sszYPkaP3ghu7Lyz-N6G93PQFwCE9dT-JzCrRkP0Hhq6-SQ3dPTVeFT8vgNCHkDH6WJ6eLUcCWsvepWj4SGdPHicw_TsJhDEgEyVJe5mldpZipXc8FHIRmHdX-qF78UTYrBLscrkE2khdlU1UMO_xXYVrFzn5A9KwMzcuUpXizcdXXxliq7YZRITYekqv3mBk-FqVT0Xtp0LxztaArfpPjpOclaplVpf_YueGS2_N5xltnfOaN-xpz_MpLTqQsLhkNmFwicdF4krqaOjvaLsNwyFhVR3i0eh1HgZvh4KiFK9WhcVMxpcF_0IPm6Mfwm-y3jhvc0b4HaTA1WLW-qK-iKkfJHUZplL5ataO-5mNqEA1-VwO29AUwxUKpF5Ssb5rbpKmSit7AbVzEJEqzLM1vutu4SuIiaxMgbV7WNM5Im9OKspallEFDb_gtiUgapRGJypiQfE6Lto6qqI4iSJKc1SiNYEe5mDuN5kpvb_xnzduySEhyI2gNwvhfHAipKXsB2UxV7ewZEYKy1Y2-9fLWw9agNHIZjjkas9wK_4vFNCRb4bFCxdoXvti-92CwBjMIi_1KK679LZgUN4MWt3_9e6_X5v8BAAD__-f-ygc">