<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/131696>131696</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[SLPVectorizer] Assertion `!empty()' failed. using opt with --passes=slp-vectorizer
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ewlu
</td>
</tr>
</table>
<pre>
Full error message:
```
Error: clang-21: /scratch/ewlu/daily-upstream-build/llvm/llvm/include/llvm/ADT/SmallVector.h:300: T& llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::front() [with T = std::unique_ptr<llvm::slpvectorizer::BoUpSLP::TreeEntry>; <template-parameter-1-2> = void; reference = std::unique_ptr<llvm::slpvectorizer::BoUpSLP::TreeEntry>&]: Assertion `!empty()' failed.
```
Testcase:
```llvm ir
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
define void @b(ptr %e, i64 %arrayidx13.us.us.3.offs, i64 %0, i64 %1) #0 {
entry:
%2 = add i64 %arrayidx13.us.us.3.offs, 0
%3 = getelementptr i8, ptr %e, i64 %2
%4 = sub i64 0, %0
%scevgep39 = getelementptr i8, ptr %e, i64 %4
%5 = add i64 %0, 0
%6 = getelementptr i8, ptr %e, i64 %5
%7 = sub i64 %0, %arrayidx13.us.us.3.offs
%scevgep44 = getelementptr i8, ptr %e, i64 %7
%8 = add i64 0, 0
%9 = getelementptr i8, ptr %e, i64 %8
%10 = sub i64 0, %arrayidx13.us.us.3.offs
%scevgep65 = getelementptr i8, ptr %e, i64 %10
%11 = add i64 %1, 0
%12 = getelementptr i8, ptr %e, i64 %11
%13 = sub i64 %1, %arrayidx13.us.us.3.offs
%scevgep86 = getelementptr i8, ptr %e, i64 %13
ret void
}
attributes #0 = { "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+zaamo,+zalrsc,+zicsr,+zifencei,+zmmul,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl256b,+zvl32b,+zvl64b,-b,-e,-experimental-p,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqccmp,-experimental-xqcia,-experimental-xqciac,-experimental-xqcibm,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcili,-experimental-xqcilia,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-xrivosvisni,-experimental-xrivosvizip,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-h,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zabha,-zacas,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-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,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl16384b,-zvl2048b,-zvl32768b,-zvl4096b,-zvl512b,-zvl65536b,-zvl8192b" }
```
Command/backtrace:
```
$ /scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt reduced.ll --passes=slp-vectorizer
WARNING: You're attempting to print out a bitcode file.
This is inadvisable as it may cause display problems. If
you REALLY want to taste LLVM bitcode first-hand, you
can force output with the `-f' option.
opt: /scratch/ewlu/daily-upstream-build/llvm/llvm/include/llvm/ADT/SmallVector.h:300: T& llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::front() [with T = std::unique_ptr<llvm::slpvectorizer::BoUpSLP::TreeEntry>; <template-parameter-1-2> = void; reference = std::unique_ptr<llvm::slpvectorizer::BoUpSLP::TreeEntry>&]: Assertion `!empty()' 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/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt reduced.ll --passes=slp-vectorizer
1. Running pass "function(slp-vectorizer)" on module "reduced.ll"
2. Running pass "slp-vectorizer" on function "b"
#0 0x0000587ea0b3b5b2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x34795b2)
#1 0x0000587ea0b3861f llvm::sys::RunSignalHandlers() (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x347661f)
#2 0x0000587ea0b38764 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x0000725789245330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#4 0x000072578929eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000072578929eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000072578929eb2c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000072578924527e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007257892288ff abort ./stdlib/abort.c:81:7
#9 0x000072578922881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000072578923b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x0000587e9fa88fc0 llvm::slpvectorizer::BoUpSLP::buildTree_rec(llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::slpvectorizer::BoUpSLP::EdgeInfo const&, unsigned int)::'lambda'(unsigned int, (anonymous namespace)::InstructionsState const&)::operator()(unsigned int, (anonymous namespace)::InstructionsState const&) const (.part.0) SLPVectorizer.cpp:0:0
#12 0x0000587e9fa84dce llvm::slpvectorizer::BoUpSLP::buildTree_rec(llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::slpvectorizer::BoUpSLP::EdgeInfo const&, unsigned int) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x23c2dce)
#13 0x0000587e9fab29e4 llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x23f09e4)
#14 0x0000587e9fab4e27 llvm::SLPVectorizerPass::vectorizeGEPIndices(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x23f2e27)
#15 0x0000587e9fac1fb6 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x23fffb6)
#16 0x0000587e9fac2d36 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x2400d36)
#17 0x0000587e9e67b5e5 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xfb95e5)
#18 0x0000587ea09290da llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x32670da)
#19 0x0000587e9e67d435 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/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xfbb435)
#20 0x0000587ea09279b4 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x32659b4)
#21 0x0000587e9e6794a5 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xfb74a5)
#22 0x0000587ea0927fcd llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x3265fcd)
#23 0x0000587e9de19c78 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/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x757c78)
#24 0x0000587e9de0b4ac optMain (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x7494ac)
#25 0x000072578922a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#26 0x000072578922a28b call_init ./csu/../csu/libc-start.c:128:20
#27 0x000072578922a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#28 0x0000587e9de01af5 _start (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x73faf5)
Aborted (core dumped)
```
Godbolt:
https://godbolt.org/z/vzxzKT6eM
Found via Fuzzer (C program before reduction)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsO2tz46iWv0b5Qtkloac_5IPy8GzXTd_b1Z3trfsphRCy2SBQACm2f_0WD9nyIzPJbGdrd-5OZcThcN4cEAe5kVJ0xQm5DtKbIL27Qr1eC3lNXll_VYl6e73sGQNESiFBS5RCKxLEZRCWQRb6v7C8N8NBXALMEF_NYGTgAC4VlkjjdQCXRl4AlzWibDvrO6UlQe2s6imrA7hkbGgPDeWY9TU5IMq7xwAuf7SIsZ8EayHn6yAu4zA0ah4DmAFLGJdBXE6oHknbMaTJrWhbwYP49jGAtyCIb7UfmHVIopZoImfRDAbxPQjieyemkYLrABYBXIAgvXmleg0eQRDfAaVrR9Jz-tKTp07LIL49GKBYN1j1dEekQ92If-9-PHxznUdJyD3Xcmt13fyRPXdgELQ2hJI0RBKOya83A2ZBemeCWSpFpKaCAzOxMCJtp7cuDAHMQYMoI_X8ZPaDsHwkSmOkTlPDmAOoDMJSI7kiGtRII4a2otfWiQBCMjMGk1kXxGWW2MeM7oEIFkFcRrCY8Rg63A-Dg_AgU0vaMTLKk1ThIUtmPX_m4pXPGOX9ZrbiveMJwrImDeXEhhUESVgFsOi0BAFMickPmiUGRlKiLa03UTzvlfmL56Jp1IQinMCRzRMYhyDIb4KwJC6yRh0w49Cah-r6HeLDkSm2TCuiCSMt4dpYSQtDcsFeOHIlLj36yo5YI62xflhhMqxIFy8-IjwZudNTP8Iji7OPCE1HrvzI4lHo7wTp2JUk-YjW3HAHMC2OPDl240OxKUauKLwY-fc5kaUf0RntTY2i0xmJjlyJ4IfkRnu--HRSog_5U3woFaLYskui3W4XlkF-51Yr0lrSqtdE-fVllnl-Y5a6W_-zhiDdS6LMAo_vzBPeZElFdQBvA3iDXINdU7umcU3rGkkY2jhwcM0OoVaMIJPKc-8oVnIEG7MXU99r2555cCAxbCbwZg9nST2Bmwm8p2ERLKp9B6bZoRPDA5wlBp7ZB7GPTUckNYFGbNadYVRNNvoCVku6Oke3WMtzrLqIHfpnfW7B5gXj9tyMzQum6DIWX0RX7UU0ZvQy_g1y9Qb63B-Dp_w8VAb_hlL2hktMXEary0YqdsFKSQehBqr4BdV-bEfP47xDDF1wbkdxQ9kFcoNX5-p3Q4VjeD67u-F5ZanX5qHWyDVY9FybI8qr66-Q7vyQHhDz4KAO6EEdDeiB4Np2WuSCqlpcE0ZWHlaSck9QV0zLzsGkaz3Udq0D-AhI3lIHKY00Idx21ChfYdysRqhzCa4UFk3XNiN85JWaGKEmRqhRoxrbF6GopztSrbSkWDtYY9_uwzAJguqzZMMs2HuhA6rJCPQOqJD0KMoH5MgHjjrhVAxd1Xpo6Jy6DR4Q6z1U0T2gW8RdMm3wQNirh1o0crWk9ZCirbVx09JO4VYMZN9jyolQDSbmROjgAY_YoeESM9ptmpdmj3ptEcYvLy8j4sX0a1Ef9V-EH6cNNUGiCiNZ10xwMsU3rFfrA1avCaorNIGrCawOMLY7_tgRvG7FcEA0LWlpvTkgxrC4zukgaTtE5QGhtnxCPtRudjaDWVAcGW2ic7a84rWl3KEIFlI5MEtGqHKrbYcw8pgWRfYtMduhV0_l3N05T3eVk1c9--7z2N-41vFgx4MdkUvBHSauaVzTis4DY2vd2NWUO1mNE9JUTUu5A9e-2SNG2vUUGEcp9q-2HcWVaPdQt4d2HsKoFWiEaTNCfns1oHTZt6OYu4W9oybQDlpTrrlmh06H-pF-3XkZo7_P7sl9U_uW-Na5-Ox0PCvfEE-m_LALlVY2y3aDn5zBz84wiZmBX1vk4fXY7of9RA7PK9-OeI5HwCsfnvmexieOgUZ-NbYjn9rzqZHPmz94-wcWhdBP0cCiLC72HRgmxQjHMM_2nSRcZCOcRnAEszSN9_giWpgBCPzJ77i-NCU8MnFfVgg_a4nwhVuIACYfuXSw7WyFhz1sylVXMBqUifZSdBpIUveY1HPGwGzWIaWICuI7xbrZpMIOy_8ov__9y99_M2X0P0UfwFwSgLSp7TXlK6AF6CTlGpjiF4GKaixqAhrKiCmoH9dUAfPHUT1QhSpGAFKAatCiLcAmOUFNVcfQFnRSVIy0ag6-NEFYbkUPvt-XDw__BK-Ia6NJI6UJeHj4-XWiSCo9W9so3oKt6IOwxIiDRkhMjFFdr4G959BrYsr_WWNKftFpKvjcTYPo9P_f7PzFb3a-PdyXP-5N5ddSm6j9CkjSCWkTa611p4weuAzgckX1uq_mWLTHUz3rpPhPYg45S6pUb2qzJUC8Bj4BbIphidQa7Nez0f1DI_wM6r7t3OoO58D-902KlUQtQHLVmzOo-mAW_uqlHnm7vvecm7VtKE1F2vQcmxgHsDjhMVGGQHDQirpnxN5U7XW5qyn4htBTSVbMqMkQVI7f1cfhJgzDMC1ygsIqrtIKTpaQ2ioHfDM7kY32o91LYXEgkuj1SbgAmvQxVbpZMAtgs-WXxzyAN-EmTvJFWkETJudIdOJIkUXNJUe-9_wHXXHE_g3xmhFz_ik-39Ysi5qDrfDU1jxLwJFVASxcUQkUXVHeiCcdwNL07RZgwIXnUHPcmewP7f9OQewV5DDNiwVM0jgOvYeMVgFcborsKUumd51mAM-VmGfWZstysDg5FrggFcTg6anTa0lQ_fRMGXuibedubpDNs3kAl7wzB6bllGyOg7hMkiAu88wLT98j3JRUHLHfFZvbu98xCNklsVOe35VVLKay8tOAwpwAiagiVoiyMxHA5dz2tqom5nC-7ISiJh8spRUL8yAuR8eLY6mwKJoGoMrsnFaOrt1sWZSzKjJuevbFGXtUgSfOnphA9VMtWkTdNFB7bl0adKtWGDlZUZQbYxb2IBRH4bG0uEqj_GM5Y1lczhiB0xW5aFBRNDgE738r2WVlXk1PkuCj_aaUEm2_k-boJfcTsZ6YhWHeYbeg5_YrVQ38Mnq_3vt6Rb7wRgAsuNJ-QzsWt3CUAcwZaqsaBTAPYHGqMoAF4oJvW9ErwFFLVGd3Ts_9hSste7snqx-m3J8o9CSiIxJpIce37i9V4WAjYt4hqeeh3VIevv3cB-dkYzFzCk_mNKkx-YvM6We-AWCMYe0mxsUxPo5jBRckmZ5cp9PwDSn_7tJy-yj2Aw_UuPLBGL4rZi4-lRDs0-PShAuSHOKSnMQlITD_47js_fjt_tsXXlNszo-TwNwgRfENE_jZv0TfHYXP9h4SONkx02PvcdRU2R97L3v-pe3YkcfL_bkyO_b3B0YMyftBsN6Nn8Tj0X4ieZSIq0bI1iyaN2geaCWR3F6kKMvvRPVMq7ORByG6iyx3oqXcbHZmezgXqFTf2sLyFuH1-fgdMdU-qW_oBZ3_6DRt6c4eS76TFsnn-5ZqbU5Z5edPcdNU2WGKs5MphnX8vil-3_SWHLGtouor4mhFjsvAPZOr8j7Z8SQM63jieD51nGR5lZJ0YnhNNKLM1xpIqa-iJuyy-cf5fBawPxWPsdb_vxfoplqkJD3EuTiqLRZwEdZoYreN7e_Z_C8WvhhmeWhOcGP8Fid5Wifxr8jTT4v7v9h8NVWVxId0h-FJuueLanqQ-movTx7FaKOZhrJGnRbycgQcw4f89yz_Q9maLqrDeQlGJ9m6SNDHsnX09_adQfsTUXkr2f53h7qp8gRNEg2eJlqD63es70vx_SuHzWRog-tD3I4qnZpEC5wXE7Nlb9PrG-0Io_z4XvGHlpSvTEFzIT3PAuBOpV8RXls5f3RmdUfmUyoh2D_sh40lZReE_LeG33DnYtVmY8L6FeXne_yBfn_xv79Gjm_drxSnYTSybsy8mQOvu1w4f3OITj9pU_C5E7P14m_uZwtvUv0kkjaUyJHOFYwfbT81HfM0x3lxyMbkOBvDKkEYiE5_RZR_qh3JIkH4YMfJlSdEEUbg6YnRCj8pjaR-woixp_0NHlb9-e2iv7q8xGS_iuVJEJex15idaoRFBSw95VSfKnGgkTyzkt2Fof1tLfR3QTC_JPHIh0vmX5QcJ3kQl6kXXJxMUoSaFDiRnzpHcYMav-OXlZCa2IWEhST2CxMZd7XjL82_iboSTLvvTydfu9zQXMhVAJe7AC6H3Wb3t8eMfHW8S9HzGgwUgWW_2xFp9N2Czn-8qkhjdNvPPu5Utriqr-N6ES_QFbmO8gTCNE3y7Gp93dQEZou6IAQuElyjECaoyuI8j5saJii7otcwhGkYRzmM0yhK51lekLiBCUFR0-T1IkhC0iLK5iZExuQr-yXuOoqjbJFdMVQRpuyP_iHk5BXY0QDCIL27ktc2rlW_UkESMqq0OojRVDP7rwWOarUgvQPv_MYIekX5yixT97n5zQ9tV71k13_-g6P3dLiG_xUAAP__bTpYOQ">