<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63293>63293</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Failed assertion when building RISCV Linux kernel after d0189584631e5
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:RISC-V
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nathanchance
</td>
</tr>
</table>
<pre>
After d0189584631e587279ee5f0af5feb94d8045bb31 (cc @mgudim), I see a crash while building the Linux kernel for `ARCH=riscv`:
```
$ make -skj"$(nproc)" ARCH=riscv LLVM=1 mrproper allmodconfig drivers/net/wireless/mediatek/mt76/mt7996/eeprom.o
clang: /home/nathan/cbl/src/llvm-project/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:927: const SDValue &llvm::SDNode::getOperand(unsigned int) const: Assertion `Num < NumOperands && "Invalid child # of SDNode!"' failed.
...
```
A reduced LLVM IR reproducer:
```
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
define i32 @mt7996_eeprom_parse_hw_cap(i8 %0) {
entry:
%1 = tail call i8 @llvm.umin.i8(i8 %0, i8 1)
%notmask = shl i8 -1, %1
store i8 %notmask, ptr null, align 4
ret i32 0
}
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i8 @llvm.umin.i8(i8, i8) #0
attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```
```
$ llc reduced.ll
llc: /mnt/nvme/tmp/cvise.7TsLFYTL1d/src/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:927: const SDValue &llvm::SDNode::getOperand(unsigned int) const: Assertion `Num < NumOperands && "Invalid child # of SDNode!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llc reduced.ll
1. Running pass 'Function Pass Manager' on module 'reduced.ll'.
2. Running pass 'RISC-V DAG->DAG Pattern Instruction Selection' on function '@mt7996_eeprom_parse_hw_cap'
#0 0x000055f5070f9b58 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x4850b58)
#1 0x000055f5070f78de llvm::sys::RunSignalHandlers() (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x484e8de)
#2 0x000055f5070fa318 SignalHandler(int) Signals.cpp:0:0
#3 0x00007fe17b26fab0 (/usr/lib/libc.so.6+0x39ab0)
#4 0x00007fe17b2bf26c (/usr/lib/libc.so.6+0x8926c)
#5 0x00007fe17b26fa08 raise (/usr/lib/libc.so.6+0x39a08)
#6 0x00007fe17b258538 abort (/usr/lib/libc.so.6+0x22538)
#7 0x00007fe17b25845c (/usr/lib/libc.so.6+0x2245c)
#8 0x00007fe17b2683d6 (/usr/lib/libc.so.6+0x323d6)
#9 0x000055f505aa7208 llvm::RISCVTargetLowering::lowerSELECT(llvm::SDValue, llvm::SelectionDAG&) const RISCVISelLowering.cpp:0:0
#10 0x000055f505aa71d6 llvm::RISCVTargetLowering::lowerSELECT(llvm::SDValue, llvm::SelectionDAG&) const RISCVISelLowering.cpp:0:0
#11 0x000055f505aa3a7d llvm::RISCVTargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const RISCVISelLowering.cpp:0:0
#12 0x000055f506e1d616 (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) LegalizeDAG.cpp:0:0
#13 0x000055f506e1c7af llvm::SelectionDAG::Legalize() (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x45737af)
#14 0x000055f506f285e0 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x467f5e0)
#15 0x000055f506f264af llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x467d4af)
#16 0x000055f506f23262 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x467a262)
#17 0x000055f5064f53a0 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x3c4c3a0)
#18 0x000055f5069fd3f7 llvm::FPPassManager::runOnFunction(llvm::Function&) (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x41543f7)
#19 0x000055f506a05d02 llvm::FPPassManager::runOnModule(llvm::Module&) (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x415cd02)
#20 0x000055f5069fdf07 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x4154f07)
#21 0x000055f50517affa main (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x28d1ffa)
#22 0x00007fe17b259850 (/usr/lib/libc.so.6+0x23850)
#23 0x00007fe17b25990a __libc_start_main (/usr/lib/libc.so.6+0x2390a)
#24 0x000055f5051758e5 _start (/mnt/nvme/tmp/cvise.7TsLFYTL1d/install/llvm-bad/bin/llc+0x28cc8e5)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWNtu2zoW_RrmhbBBkbo--EGJ454A6WnQFAXmKaDILZsnFGWQVNLM1w9I-SYnPSkGzcwAU9SKRImLa-0bt8SdU2sDsEDZJcqWF3zwm94uDPcbbkT4wUXTy5dF3XqwWJKkrLIyzVkCWVnQogLIWsLbrIWmSmVJ0qxpWIIRLYXAKCXdepCqQ7RC9ArfYAeAORaWuw1-3igNuBmUlsqssd8AvlVm-IEfwRrQuO0tRjmpv179gdjSKieeUE4QqxFZIrI_5mT3f7ykKe74I-CZe_wLUYpoimhptrYXkQPFp3D49vb7Z8SWCe7s1vZbsJhr3fVS9KZVayytegLrEF0Z8IiunpUFDS4MdCAV9_AYTn2Rj3-qKpwAbG3fzfuRkdDcrBGrMaKrTd9BAIvWRXQlGo3oylmB6Errp262tf1fIPzuEtGVMkIPEo4DV72ETxAm34MG4VVvlvWnP3sJbr5BrK5oERYTvXEe3y-_cz0ARjSP01mNWH2_DE-P52vwX7ZguZGIloOJsSCxMh7RasQIYLVzYMNKwR1_Dh1G7Ar_OXS7qS7gI5pjROmNeeJaSSw2SkuMKMN9i3cr0iQ6pMAtVxrkfLTPfD5_25PxWGMLchAgo6vwzVdsg3XDkP37SPDcrsFjyT3X_KUfPEZsGSjCLBgCZlvE6jyNh5k6nCS0RKxOaDkzjI5j92GM0gmst2qrYQ8ZgylPZ4N5NP2zmekQxrO1GQ7TxqOEVhnAitGYGjFgHsZwedhy6-Bh8_wg-BbRUpUY0YwEP6DicpwOxtuXg2ocHkgiBc-VxoJrjcO0lARnz4dOmbkqT7Guwv0kJMIRwfS-4-4x4rhNRJgl4dGAvn_O-d4CHnF2E8IjW2-xGbQO51yrtcHpfoYFH3XuvVksJ75il3g1mBi-uPbeuhBnpg8aGi4eselbC4BN716MwKYfzLMyErstiEFzzxsN-FlpbcEP1uAOut6-hEzvDRz0SRCa73i_YZTRHtHClE2ijntvVTN4cPHW6Obi8jcSxEeDvBX2b1Q1rcU-F-Zaj-Nai11l6ULKrsxTrC--24bi8qQczItv7nb1j2-3iZxUmv-L0nJ3e13fX2M3NJ3ymONmWIfy0VuPfY833m9D2CG6QnS1Vn4zNHPRd0eDnJVk5dwAofZjboKSaL64bY37WYgLb7mA3fL3PgSKHLrtIWfJHMd_d7ZfW95hbtdDB8bH8H_Lw8kcfx2MCfvjlrtgjuKQN3dh4DM3fA02aO8N7no5hLJEixMgWuwI0ddgX2_ur2bf8bL-NEPsell_wnfce7AG3xjn7TCudIiH3TLtngKixTuFrNgVhJhH5AchhGRZm5GCtFWTlfgYPO7FjSd3VhkfjfctWBPR8viQ5c8PvfMWeBcj42ofUSjU6F9MA2Wc58Ewo4cbHgYbZeKAQPSS_EjLjDRZeSyViLLkjH9RSniL_9fB3Ku14foPbqSO_UP5IRRTKCVMKNIzipwlJZ6QCZVvtNg47OZiG-KTxN8BiO2AihaSoqF5yxuyEzA4G1ioZjyKuevneWTEKt6QCZ90CtO0NBfvwpQVzcUEJnvFhpTYcuXgVziRqRvzKVhWZqzEvAlV4T0wSjM2BSvOwdLsfYGUptlUYHkmsGQyf18aZTKfwFSn7s84Lyg5zbCQ7N-_xQbmtn8Gq2Jjilitw9X99e311bdJtu2KfEizk8GTzSHm4K6c4wh_cw96D_46tEIWkXOSicz_50gmZyQZL-SvkIxXcfMay-VH85wkfA6JzJMYONz05qXrB4cN78BtYx2tXq95C2uu1T93e_b-6sv2jPm4ydaB3v6ZZf3pbUrsjJIoePszxZNVP6hMZgUreHvIk0AxnVBsaZkB-QnF4IJxdNce1UZed8pHf30I37xoMyATvtkZ3zz9qUmPfMfRWutL7pS41L14dBO3HhqJsRsbo-_3q5HpmfXzMzWM5vRdNXYwX8xnLjbKwJ74RM2rex8kh9OcTuQUEzlpmzF-GkxnvELTdqLoTSkfq4GJVDA-DbByoqFqJWuLEw2ru0B732r-V9mnSZaytpiwn2x7OSeZJPQX2H-OzfI0iHZDH8RcSDKJHUrO7d6SU7trWHPxsuuKjxpuuu0xK_6T_NOWTCxPp9tkUvC25bjjyvzuxWkpk7blk8XpWe9Vldn7PSplZTaJfcrOYSrC8cNDmPbgPLf-4UTQ3wFXZMovPTNOVkKGR8jfbx4hSsiOy--_H1zIBZMVq_gFLJK8zPOqIjm92CzaNK2gTDJa5BmQMiEFZCShaS4JL_OUXqgFJZSRPGGUsYTQORWUCdbkkvEyrIdSAh1Xeh4_rPR2fRFfkBc5oxW70LwB7eJnZUrDmzEYuWucZt_Dy3q2vLCLUdCwdiglWjnvjmBeeQ2LVXyfx_zwmQA_b8AcPxrHNmn62Zi__lJ9MVi9-Pff96OifwUAAP__o2De0w">