<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/105894>105894</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[RISC-V] Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
patrick-rivos
</td>
</tr>
</table>
<pre>
Testcase:
```c
long a, b;
void c() {
for (int d = (unsigned short)(b >> a) - 7471;;)
;
}
```
Godbolt: https://godbolt.org/z/5Tqaba1ha
LLVM IR:
```llvm ir
; ModuleID = 'reduced.bc'
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
define void @c(i64 %0) #0 {
entry:
%shr = ashr i64 %0, %0
%conv = trunc i64 %shr to i16
%conv1 = zext i16 %conv to i32
%sub = sub i32 %conv1, 7471
store i32 %sub, ptr null, align 4
ret void
}
attributes #0 = { "target-features"="+64bit,+b,+relax,+xsifivecdiscarddlone,+zba,+zbb,+zbs,-a,-c,-d,-e,-experimental-smctr,-experimental-smmpm,-experimental-smnpm,-experimental-ssctr,-experimental-ssnpm,-experimental-sspm,-experimental-supm,-experimental-zacas,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-f,-h,-m,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smepmp,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-v,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zaamo,-zabha,-zalrsc,-zama16b,-zawrs,-zbc,-zbkb,-zbkc,-zbkx,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zicsr,-zifencei,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-zmmul,-ztso,-zvbb,-zvbc,-zve32f,-zve32x,-zve64d,-zve64f,-zve64x,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl128b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl32b,-zvl4096b,-zvl512b,-zvl64b,-zvl65536b,-zvl8192b" }
```
Godbolt: https://godbolt.org/z/3znT6d38P
Command/backtrace:
```
/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc reduced.ll
llc: /scratch/tc-testing/tc-compiler-fuzz-trunk/llvm/llvm/include/llvm/Support/Casting.h:566: decltype(auto) llvm::cast(const From&) [with To = llvm::ConstantSDNode; From = llvm::SDValue]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/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 '@c'
#0 0x0000650354e9d720 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1e77720)
#1 0x0000650354e9ab3f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1e74b3f)
#2 0x0000650354e9ac95 SignalHandler(int) Signals.cpp:0:0
#3 0x0000782a68442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x0000782a684969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x0000782a684969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x0000782a684969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x0000782a68442476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x0000782a684287f3 abort ./stdlib/abort.c:81:7
#9 0x0000782a6842871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x0000782a68439e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00006503537b5cc8 llvm::SDNode::getConstantOperandVal(unsigned int) const (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x78fcc8)
#12 0x00006503537bc32c llvm::RISCVDAGToDAGISel::selectSHXADDOp(llvm::SDValue, unsigned int, llvm::SDValue&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x79632c)
#13 0x0000650354c2438f llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1bfe38f)
#14 0x00006503537c808f llvm::RISCVDAGToDAGISel::Select(llvm::SDNode*) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x7a208f)
#15 0x0000650354c1cc14 llvm::SelectionDAGISel::DoInstructionSelection() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1bf6c14)
#16 0x0000650354c2c8b0 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1c068b0)
#17 0x0000650354c300b2 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1c0a0b2)
#18 0x0000650354c31867 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1c0b867)
#19 0x0000650354c21cb9 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1bfbcb9)
#20 0x0000650353d9a627 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#21 0x00006503543c2aec llvm::FPPassManager::runOnFunction(llvm::Function&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x139caec)
#22 0x00006503543c2f19 llvm::FPPassManager::runOnModule(llvm::Module&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x139cf19)
#23 0x00006503543c1e26 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x139be26)
#24 0x000065035369bf36 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#25 0x00006503535e0c96 main (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x5bac96)
#26 0x0000782a68429d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#27 0x0000782a68429e40 call_init ./csu/../csu/libc-start.c:128:20
#28 0x0000782a68429e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#29 0x0000650353692d65 _start (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x66cd65)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc
```
Found via fuzzer.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWl1v46rW_jXuDUpk4--LXqTJpLvSzDvVtBq9dxHGOOEUYxewm-bXH_Fhx06zv0Zn95ytPeZhsVisBxZm4RRJSfeckFsvvvPizQ3q1KERty1SguKXhaB9I2-Kpny_fSZSYSSJF648f-P5Ky_x7f_Y1lnD9wB5cA0KL7yzsr6hJcAezDyYAy91UgCqRgAPZpQrUAIv3OhKx40rJZCHRigP5h7MCuCFX7zwi7abgwVIozTQxsM73W6NjYN56ebCM1u9b8qiYcoLV-CgVCs1A7j14HZvG5aN2Htwe_LgNn5-RQUKDsgZMs-vX39-Aw8_PhJnrK8BFU4a3oFvTdkx8rBxlFJByg6TcllgD6ZWTSGxJwqUSCGG3ptOOV1IFrUXrsii9cJVEpnHgo4ggJkXrgKYLXgIrexJyyCcmVWCtowMJgWVuE-iRcdfePPGF4zy7rjY827sZp8lqSgnwCyWF_l6vWgSAQ_Gvlk3GPrnxSNcifdxLoDWkgdhhkQanHuubXnWww3vjaISHceDpu6kGkCD5EI1MLonclS6cTSgdUM4Hb4rjKYuaQjH7toDEzBWVapGkEFBdoVubpUAvGNMY8TonoNoMCyIMjNyGVvmiZQStOgUkW529ISnd3rS7UosKoJUJ4jUUx1u9BPeJVFBlQfXHrwrbCEIQ0cLj5JWtCe4pBIjUZas4cS2nAo0gGIA0oPrhRYvsH6U-kHM49gSQWvCFWILWWMlrkjrtr4i5dek8qoFeV33mrC7IjwhjOQVKUPy42AniivK2utyecVMX-AQfpyMU_-yN9qVfhz0w3gmD7jpuCKC8Ddb3yPVIgtVj5iDvTyLezlrUHrdTKVG1EprXBJG9g5LQblTIG3dWiQVUoRwU5FDP4lxtR9Qa-deStxUbV0NeOatnBiXr42kDs6sS_06VxYr7MqRwcR_2SXRkRnYo5IMoLOgQMKJKO-RU-Oobazpvi1qg3r9OOIesc6hgo5A1YjT1lUJe3OoRnhApHZI0tq4dZQVJvrssbjH7YAqLjCj7bF6rUbRW40wfn19HQSvul425az-2rh2u-sq1snDsOcWR3UgqDTbbsDFBMszxnUzqTS8rJv-LKhqUtPyeBYMJG3lspHULaLiLJDvfKLel3aaj72OZ470aE1rfXnDB6N5QgHMhLQwiQaErJcnVByQBUxI16FGQVJY-Ob0C9tUvBSuHOrG2RO2NrBttYFzwsQWlS3qpnVgKI3vp5Jya6SyRqqiqim38OCKUTDoHqZgaKU4iQqHiqYeUTuik0MY1Q0aMK0GxOTQCQsbWieKud1xJ6pn1yHpRBXhmFCLD5Qrrti50qJuMHJoneFhEl7sk7uidCVxpeX9Ykd5ka4gTk26Zjt_dd3ZQZW0S9rbyNQvPVuSEFYjOjqUROWIqhG51skaaPxWI4cPQzk2u4joX_auHOQcD8D53b_wUccFnUZDfzmUQz859pNDP8e8d9R7FvjQLXnPApiNMAmzUQ79aGyAcTLAEKZJdq4MKPLzUSUORnEymkviOBw1siDXKhD8BzLN8MSfkzLMHqdpxbqpa6TjY1sg_KIEwlfS7SHthVuJBVL44MGtwgtFpKJ6znUFN3VLGRGLqjudFjrdetFGO8rKxR73I9YZrE0LtUiv8pYxDIa8lTGX2jOsOf3CkHqAc0E5Zp0-VQbBU9e2JtnfrpGxtTx44SpOEj1cSTBT7y3xYIY61ehU1HQLV164wkgqD2a44VKBrdAvgMQkq_HdG1UH8NyYpOzcYa01EVdPm_9rSqKzdd3rQulp8xOxjnjxRjuwkpIIRRsOvMSnEnnh-rnRFxKY_dSnn06NEw_q1BQaf8L187tt141I7Dude4CmApTr-UGKFowASyowSWEKKkQZKZd2ph-_flk9fdGpbE0VQKDo9kAQPUc6770IKqoOXbHETT2f6EUrmn8RfdxvqZSdzkG3APESuOkH6kAAFkgewBhmbvgnhfALKLu6HePOXwLz36No9gLVIyv5ixHxy0EYOEd-dJxTvgctkjr7Trcdx2aRHrXgG-JoT4Se2IaD2lzIplcxneunji38HYs_Hp7Wi59gs7pfeOGXzeoePCKliODggUslOjvcE2HEIDdWNfih73rmFpWOWzX0gX_0fd9PYj-MI5KXKfQncSffpQWPgnJlVuHZ7H6YnZUEets1UgmCbLCvAeXKRmH2Dy6EB-_8Y0DSNIX-5NYNw-CCEyrC6hqnHx1_onuO2G-Il4zoJCP7PLejIqxmbsNLt3Eeg5mD9suEdtGK5RK3ekP45t9oKHSG0gyiJIsiGEPfkWK08OD2mCW7JJpeu3UDXspmmRj3TJeZc9HcZp7kFQa7XasOgqBy90IZ29G6ZcRcaky4LT245a3ORbZTtaV-ZUeRF67S5Gw__iv29fWCI_aHllPzPWIyG8k1y9Nuf2guyy_MpZeTG6UJ2EuzHsaShR7cLk3tXZZEJ8PbtpFUB4JAVBJjG6ZeuJrMQTY3DbO0CgEq9DvWmFKlXT4jst4FmvHZQv7BQlCAHWc71qByVzY1onZdqMkRt1pcyz1G1lwQpNolt-x6J_lzg2FO8uTvhZLpMoaStjnbnmFaxBhns6POnoMa74kajsfvLRGIl-Z8O3-Sc9vBnrafsG_TrMI4m9GBF3RwCPGEjn5n_9ys7p-bzer-4Ykw9xIyL-mn3_5_tdl8b2ev0-Gsh2sw57m-khC45OITmOdJCPGMeTh7YWEYhdn0PTueQzPiVrpuSqKTSn1IZR_WHq5m5PEBCbvEly2feM4UFQmzasY_mq88zvwZ_99ZeTsBv0f7c9YSQf-CSzxfywDjIPrTtdw0k7xjknZ82ilaVAkOohmR5CIocVb4f0pEh-M94Stefqmp2qzuP5ED9pOs8Gcc0jmH0PcL-Bc31oqxOyQpvmMN1pfZSZSN-ajbSp_15giwj_wCzhhmFwyDLEn_lKHo-Hf-DeED5WQgM2P4oe0TKRZZks4o5heBGOAi_wOKX8ke4ff_eaJFVeAinxKFsytEWOYogdO1vPBVX4YmLK_S-8hr2SKhluZXnyv2PqbB2q_5NSDEEJHpwbx91F2Ha9nf9ugfn-kwx4jMDlwILxlVQf4XGNlf_-YB5ESfyaYK5nETXrAJCEwmbNhkQ0x4PdTt-XXw3-ZUEDjLbeE8JUjyogoT4MYal0HnM-awX81zuq9ff35bN1yR4_B2Zgxfj-3ZcR3GxMd5Akx2_wnE4wLheU4PLy5ZMC9zH-x2-iqwkwoJtcOIsd14_8Cy-3hDcnewa53s5zdztUvOo6aXo5LIB6YP5VRdDmShtr4w1u2Vx_x-DSdTe3kLM0ZnVK6xuGo8TPXtMT7bzi_CA5ZJDKzVz1i4JMFlEo8Ld5J6VsHD92dAJ9-PzNdLQczXNlLazfTP-XXtG7J9bpuOl6CnCGjLRCxvytuwzMMc3ZDbIIVRFOUpjG4OtyjK4wzHKcmrKkE5DMIYx1WcRigKYIbKG3oLfRj5mT4VoiyKliTLU5xmVZrAKsFZ4EU-qRFlS-3lshH7G_OF8jbw4yyPbhgqCJPmb1Eg5OQNmFYPQi_e3IhbQ63o9tKLfEalkmcziipm_ojFfrvz4s3nfr296QS7_fXPs45_fwv_HQAA___iJP5x">