<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/88796>88796</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[VectorCombine] 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>
Reduced LLVM IR:
```llvm ir
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
define i32 @main() #0 {
entry:
%0 = tail call i16 @llvm.vector.reduce.and.nxv8i16(<vscale x 8 x i16> trunc (<vscale x 8 x i32> shufflevector (<vscale x 8 x i32> insertelement (<vscale x 8 x i32> poison, i32 268435456, i64 0), <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer) to <vscale x 8 x i16>))
ret i32 0
}
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i16 @llvm.vector.reduce.and.nxv8i16(<vscale x 8 x i16>) #1
attributes #0 = { "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+zicsr,+zifencei,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl256b,+zvl32b,+zvl64b,-e,-experimental-smmpm,-experimental-smnpm,-experimental-ssnpm,-experimental-sspm,-experimental-ssqosid,-experimental-supm,-experimental-zaamo,-experimental-zabha,-experimental-zalasr,-experimental-zalrsc,-experimental-zfbfmin,-experimental-zicfilp,-experimental-zicfiss,-experimental-ztso,-experimental-zvfbfmin,-experimental-zvfbfwma,-h,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smepmp,-ssaia,-ssccptr,-sscofpmf,-sscounterenw,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-za128rs,-za64rs,-zacas,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-zmmul,-zvbb,-zvbc,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl16384b,-zvl2048b,-zvl32768b,-zvl4096b,-zvl512b,-zvl65536b,-zvl8192b" }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```
Godbolt: https://godbolt.org/z/jrEv178Ev
Backtrace:
```
opt: /scratch/tc-testing/tc-apr-15/llvm/llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From*) [with To = llvm::CastInst; From = llvm::Value]: 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-apr-15/build-rv64gcv/build-llvm-linux/bin/opt --passes=vector-combine reduced.ll
#0 0x00005eb857c5a1b0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0x2da91b0)
#1 0x00005eb857c575bf llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0x2da65bf)
#2 0x00005eb857c57715 SignalHandler(int) Signals.cpp:0:0
#3 0x000071f7d0e42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x000071f7d0e969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000071f7d0e969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000071f7d0e969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000071f7d0e42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x000071f7d0e287f3 abort ./stdlib/abort.c:81:7
#9 0x000071f7d0e2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000071f7d0e39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00005eb856da36eb (anonymous namespace)::VectorCombine::run()::'lambda'(llvm::Instruction&)::operator()(llvm::Instruction&) const VectorCombine.cpp:0:0
#12 0x00005eb856da4290 llvm::VectorCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0x1ef3290)
#13 0x00005eb855bc7936 llvm::detail::PassModel<llvm::Function, llvm::VectorCombinePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0xd16936)
#14 0x00005eb857a7f451 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0x2bce451)
#15 0x00005eb855bbec26 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0xd0dc26)
#16 0x00005eb857a7e12b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0x2bcd12b)
#17 0x00005eb855bc6ee6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0xd15ee6)
#18 0x00005eb857a7bf61 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0x2bcaf61)
#19 0x00005eb855440205 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0x58f205)
#20 0x00005eb855432836 optMain (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0x581836)
#21 0x000071f7d0e29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#22 0x000071f7d0e29e40 call_init ./csu/../csu/libc-start.c:128:20
#23 0x000071f7d0e29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#24 0x00005eb8554284b5 _start (/scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/opt+0x5774b5)
zsh: IOT instruction /scratch/tc-testing/tc-apr-15/build-rv64gcv/build-llvm-linux/bin/op
```
Found via fuzzer.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWttz2yq3_2vIC2OPhK5-yIOT1Od0Tju703b66kGAbHYQqIAUx3_9GS6yrcTtafduz3zftzup-LGAxbppsVCCjeE7ydgtKO5A8XCDB7tX-rbHVnPyuNB8VOamUfT59iOjA2EUvnv35T18-xFka5A8gGQNyiT8CDF2kOtAtVjvmIUUWyzwsxosBNkDBAixRQeyNVv0IFuXuX8s-AmkqAbZOkX1QmYo0D45GkIztlbzXrCJpeaGjGW-GOSjVE9yIbgcDoudHE7LwpOylksGeYYgyJMOcwkc6xUEKEsgqO7CNCatfj6pBwEqEr-TxVxAgoWAPC0dB6fwcmTEKr3U3jpLLOlSHsaap6Xjnd2PhmDB4AHW8ODWgewNtHqQBF4bdzq_gWY_tK1ggfN35nFpmLZMsI5J-515veJGSYDuveqorPOsyIvSE8ocJgCtHP4_V39jwpFpxSW3HAt-ZNoZ1KrXk73ufqtVtCzUzHqRkuil6uHSXSC7g5tBEsuVhGtrtQHZGkrlXNBg8gilajVjUCrzLAmUapBPXFJoekYGgS1uBINPXAjN7KAl7Fin9DNAtVSSnaSgjAis2d_0aYyi9FJ-bK3mzWCZiQHmorW6cxEbwnjRMmwHzYyL0-zBPdFdmTfcAnQP0B0ODQkNDU0bmi40mgl8CHAMzZEToyfYMkkYj72RZai9wIcTLnN6gdsLfJojUlQ3pw4qynMnQ2dc5g4vmH8ceqa5i00sFqbr-u4KVV6jmuvUq8SvynD6mj5cmXzEuFNXqM0eX6EK7O34iqwNeU1um7Zz6eQlnZOWi_463ZjXdGuuCDh-i7sbeOq88Hv3MHuiBmmZZvIp9HfY9jhAO2IR4WjO5NHMBuzIiDen6TAP1I71nVfBmIlkCOmtjlC1fddOeLa9MRZbxuTU0ZzYgC2J7Wnvi53NUOYH4eGIKZvAEECDdSRxOeI4TeJeBdZj33QeHciIxRBRw0_AdljyPnaZeIqow2RCrIvI8M5LdDAtYdiwiEfST6iVmgjeH9qv7Yn01GFCvn79OhG-uj5VdNb_quI4b7lTnBuCNaXCp6YzvRWD2Z-pds8wbfAFbi6wOWMSAj12lKSdGs-EtmMdp4czYVI-dF4Osq7HXJ8JLt2eeyMNlj-MLioldrup3styxCmqdYRlPiGCI3iKlKDRMShzbEhoHmP3ceofQhvWkLCGhEkhco6EhaYNTaf6CKbWS3qkXAZebWDS7mMT37JjO03YX4JplJOY5o6cNKo7of6EjhER3Ck8Yd5OSJhpEdEhqo6cyPBCHbkzYEB7Lq204tzp8TDN3_eRx6TkY3jK2NDYstgGFR_DHo8mNixOM3E42KfrhrDpGF0yRp-M0VLj2VRjdNP4uIvtRJdkAnGX8VGe5oSU69G03kzttM6c1plpXZRzjIKOIk1Q9MUo0jKrTx2U5PWEM1SVp06erMoJFymaYFkU2Ylepys3gOCpJJkf5unpMP915ch5r1NFHbr_pWijhHXFz97a3lVBAG0A2uzCwFLpHUCbI0CbP_WbMa3qN-NlHXKHyaPVmLDXJXvoqt4zB2hjiMaW7AHaWLKwzFjuPOY6uNeLtABo4wqkc8MlEYNL0RPh09D3SluANvfYL1_uQbYuKlfWQ1dr2eeeAVTjwSqntF-WrUG2JthYgOqNdm_U2hukuHvidg8_K2_u81TH-q001leIWnUvhr9gMTBQPLgt18bVyK6CBGXCDQbZ_WflC7b6izs8XNlWAlS6qsxLkN1_fg7jbhDr3eCra9VCLonqemy5c2RQI_U1WwVbzAWjy2DOD-_erD-9gWZoOm4hhs2wg5o5q7i6-IULud0PzZKobm7aRa_Vn8ydlhtuzOBKxA3EksJocGj3DBKNzR42k3vj9p-sC0Y6dP3J38kS-n8ftNpp3J20Mj_u9mbggi70WOY7Mp76XlR_3XIklxE2qrdwseixMcyA7CGU0guiusbdvUJJTZdCnG5XWQKTQ5IkScGauqhIgdMmufCmeTYBfNBcWq_dZx_NqD5P0vhpq4zVDHfen_eQSxu8W_96BQG6Sw6I4lXaJOfrjM8Lc1WqommvqfJxkJ_4TmLx31hSwdwxWP92acuiaWfSopfSVmkBZ3IBVEc7BrJZkt6FVeL_nxhlkVGVthVNWI4KlERdBG8A2hzqclvmlxdzN0CWRi1LL55fMhMun_NclauWwO22t3vNMN0-ciG2vOvD5Rf7N3wJ0Eb27rzcXE5bEpCt8xxk66o88y9-hL8rZiUW3-XsU1t6YY3yGufLZd9lV69esKteGjevSrgz3h-eU4AAbZa-92woc-XXpleGu0DQmBvmeaMKZOsLG9Rz1qiu2gzixmUqz8rS4D5PCtKlTuMzh9UrDmkDt1JshcJ0S1WHefAL93XMxpE7syM4sEvTyokU3e5eoGTOMFuxVflzoeSXnELJ8Zy9lSXFWckaxxNLJZ87NRgoccdM75PKKp4hPm_dh7QVc8wQvxeFLkCVwF1DMUDVLBe5k0kP_rOFz0VxvuqZxlbpyOO7KyBR0lg4E-L1q-d0Qy90y9HqMnnOOHzAxlyqcp42fWaJufM8sJZYPBtu3mOJd0yD7P7KIndalr83faWszdAqmbk1u1S9aEi1ysoL0SmzmIt4dGBj3ivKxHUFZiq_Ntlfsoj7-bc0NU3LVTZ_gfLZQYGrNi_SC8m9db8n9T_LgKghLC_SmQWLeaw2jKBfEau_zfL_LI_RhBI0D_nyRcizFDUXkr9XdBDss5qkdI5YU9y7_H7VBmHBT1kgLvn_iVjqb8IXBqheZNeSsZ-L2Enj-x8021-wy7cC7l_a2DQtGJsHW_0i2Jq2_JH8es3C_8GGQw3BbTnPq6tZlOZ5gpLiQnA9-BD7wHsmXB13qesnq7ncfWTttRB9ZYLP_jc27zHZez7ra6PveKOxfn4rW_W268XrWUqJPwbbD3bDxRUmf2v4G-qstcbPjnrpM28TMey4fJ3rz_ONpYHWnlLx_ag4hTMzOl53znXuthiq3dcniOrt1ioV80XQ4n-4_0b5zVlfmOYtZ3qa17iRn25_Z0AWdYuS4jIeUTKPxwzVWQlVb9-7e9DvlCSt5zUbSl_czFZ0lcDt1t2VtsZibbcEC7E9XdCIGV5fIeMl9dqi8F3P333L867o5a4sT_zvzLdccvtyowAd94XnHu6E_k8A0PmOg7JrTGeqXNPiKvOscrex4sw7nzsM1XlTwMD1d_qrqvLmHDlH44wJ3_7xGfLzVfDXf5m7-vU3PDdqkBSOHMN2OB6ZXt7Q24yushW-YbdplWYoLZKiutnfNjSjLCV1ldO2TFYJTVx9UORtVhQ0L7IbfosSlCd5WqA0ydNqWSRJWSU0RWVOUYNXIE9Yh7lY-l-2K7278d84b-u6WpU3AjdMGP_3KAhJ9gT9IEAIFA83-tYr1gw7A_JEcGPNmYvlVvg_ZJlf3ouHy6_AqPrdX4FvBi1u__pnXm-F_w0AAP__K9sKxg">