<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/113451>113451</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Assertion `((GatheredLoadsEntriesFirst.has_value() && E->getOpcode() == Instruction::Load && E->isGather() && E->Idx < *GatheredLoadsEntriesFirst) || all_of(E->Scalars, [=](Value *V) -> bool { if (E->getOpcode() == Instruction::GetElementPtr && !isa<GetElementPtrInst>(V)) return true; auto *I = cast<Instruction>(V); return !E->isOpcodeOrAlt(I) || I->getParent() == BB || isVectorLikeInstWithConstOps(I); })) && "Expected gathered loads or GEPs or instructions from same basic " "block."' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
TatyanaDoubts
</td>
</tr>
</table>
<pre>
To reproduce the test below with -passes slp-vectorizer -slp-threshold=-99999
```
; ModuleID = './reduced.ll'
source_filename = "./reduced.ll"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128-ni:1-p2:32:8:8:32-ni:2"
target triple = "x86_64-unknown-linux-gnu"
define i32 @wombat(i32 %arg, i32 %arg1) #0 gc "statepoint-example" {
bb:
%zext = zext i32 %arg1 to i64
%zext2 = zext i32 %arg to i64
%sext = sext i32 %arg to i64
br label %bb3
bb3: ; preds = %bb
%getelementptr = getelementptr i64, ptr addrspace(1) null, i64 %zext
%getelementptr4 = getelementptr i64, ptr addrspace(1) null, i64 %zext2
%getelementptr5 = getelementptr i64, ptr addrspace(1) null, i64 %sext
%zext6 = zext i32 0 to i64
%getelementptr7 = getelementptr i64, ptr addrspace(1) null, i64 %zext6
ret i32 0
}
attributes #0 = { "target-features"="+prfchw,-cldemote,+avx,+aes,+sahf,+pclmul,-xop,+crc32,+xsaves,-avx512fp16,-usermsr,-sm4,-egpr,+sse4.1,-avx512ifma,+xsave,+sse4.2,-tsxldtrk,-sm3,-ptwrite,-widekl,+invpcid,+64bit,+xsavec,-avx10.1-512,-avx512vpopcntdq,+cmov,-avx512vp2intersect,+avx512cd,+movbe,-avxvnniint8,-ccmp,-amx-int8,-kl,-avx10.1-256,+evex512,-avxvnni,+rtm,+adx,+avx2,-hreset,-movdiri,-serialize,-sha512,-vpclmulqdq,+avx512vl,-uintr,-cf,+clflushopt,-raoint,-cmpccxadd,+bmi,-amx-tile,+sse,-avx10.2-256,-gfni,-avxvnniint16,-amx-fp16,-zu,-ndd,+xsaveopt,+rdrnd,+avx512f,-amx-bf16,-avx512bf16,-avx512vnni,-push2pop2,+cx8,+avx512bw,+sse3,+pku,-nf,+fsgsbase,-clzero,-mwaitx,-lwp,+lzcnt,-sha,-movdir64b,-ppx,-wbnoinvd,-enqcmd,-avx10.2-512,-avxneconvert,-tbm,-pconfig,-amx-complex,+ssse3,+cx16,+bmi2,+fma,+popcnt,-avxifma,+f16c,-avx512bitalg,-rdpru,+clwb,+mmx,+sse2,+rdseed,-avx512vbmi2,-prefetchi,-rdpid,-fma4,-avx512vbmi,-shstk,-vaes,-waitpkg,-sgx,+fxsr,+avx512dq,-sse4a,-avx512f" }
```
Reproducer: https://godbolt.org/z/8WhP4hY6G
Stack dump:
```
opt: /root/llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13048: llvm::Instruction& llvm::slpvectorizer::BoUpSLP::getLastInstructionInBundle(const llvm::slpvectorizer::BoUpSLP::TreeEntry*): Assertion `((GatheredLoadsEntriesFirst.has_value() && E->getOpcode() == Instruction::Load && E->isGather() && E->Idx < *GatheredLoadsEntriesFirst) || all_of(E->Scalars, [=](Value *V) -> bool { if (E->getOpcode() == Instruction::GetElementPtr && !isa<GetElementPtrInst>(V)) return true; auto *I = cast<Instruction>(V); return !E->isOpcodeOrAlt(I) || I->getParent() == BB || isVectorLikeInstWithConstOps(I); })) && "Expected gathered loads or GEPs or instructions from same basic " "block."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -passes slp-vectorizer -slp-threshold=-99999 <source>
1. Running pass "function(slp-vectorizer)" on module "<source>"
2. Running pass "slp-vectorizer" on function "wombat"
#0 0x00000000050d8608 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x50d8608)
#1 0x00000000050d5fbc SignalHandler(int) Signals.cpp:0:0
#2 0x000070a067c42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x000070a067c969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x000070a067c42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x000070a067c287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x000070a067c2871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#7 0x000070a067c39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#8 0x0000000004157831 llvm::slpvectorizer::BoUpSLP::getLastInstructionInBundle(llvm::slpvectorizer::BoUpSLP::TreeEntry const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4157831)
#9 0x0000000004157890 llvm::slpvectorizer::BoUpSLP::setInsertPointAfterBundle(llvm::slpvectorizer::BoUpSLP::TreeEntry const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4157890)
#10 0x00000000041820da llvm::slpvectorizer::BoUpSLP::vectorizeTree(llvm::slpvectorizer::BoUpSLP::TreeEntry*, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x41820da)
#11 0x00000000041a7a5c llvm::slpvectorizer::BoUpSLP::vectorizeTree(llvm::SmallDenseSet<llvm::Value*, 4u, llvm::DenseMapInfo<llvm::Value*, void>> const&, llvm::Instruction*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x41a7a5c)
#12 0x00000000041ab4ad llvm::slpvectorizer::BoUpSLP::vectorizeTree() (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x41ab4ad)
#13 0x00000000041c0e45 llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x41c0e45)
#14 0x00000000041c2f7b llvm::SLPVectorizerPass::vectorizeGEPIndices(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x41c2f7b)
#15 0x00000000041cf257 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (.part.0) SLPVectorizer.cpp:0:0
#16 0x00000000041cfedb llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x41cfedb)
#17 0x0000000002f64f0e llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2f64f0e)
#18 0x0000000004ed9788 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4ed9788)
#19 0x0000000000e2773e llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xe2773e)
#20 0x0000000004ed81ae llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4ed81ae)
#21 0x0000000000e26e8e llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xe26e8e)
#22 0x0000000004ed7be0 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4ed7be0)
#23 0x000000000090a07a 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) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x90a07a)
#24 0x00000000008fce7c optMain (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x8fce7c)
#25 0x000070a067c29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#26 0x000070a067c29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#27 0x00000000008f493e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x8f493e)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWt9vo7qz_2voi0UEhgB56EN-NHur29VW29796j5VBkziW2NzbJOm_euvxoYE0vScdrdHWh2dqk0Bz3xm5jNjM4YQrdlGUHrpTRfedHVBWrOV6vKemGciyEq2udEXuSyfL-8lUrRRsmwLisyWIkO1QTnl8gk9MbNFfkO0phpp3vg7Whip2AtVyIdzs1VUbyUvvWjlz-AHecHKC-ZeEnS_7jRaoK-ybDm9XiEvWiEPpxMPrxUFs-WEcw-nTlTLVhX0oWKcClLTThqfSmMnbYjaUINKYggnz7I1vTz1ay-aU7_BaeBF8wjbDzgNx6dwlMT2w2eHgxBnXjQPceZXWdAdCXsp6dWT2L-zlxlc9hvcD2TdX4TdGD711ijW8ENk-yx5SGK_FY9CPgmfM9Hu_Y1oD1rus6QVExSxCCMvDp5knRPj4cye4ylRGw8v0fEs9PAMeTgK0KYAK9oQQxvJhPHpntQNpx7GyEsXDj3PvagzhADhhe4dlfZgAIuMREDTWBSfk30tqntU_WeSuUKc5JTDYJ5HQxLgNJqjD_1A7TWKlrojfJrnA5c21FBOaypMY5SVGF8Bt_ASwSEpS6UbUlAPZ5Ze0UIlLkGmJ-It5PjXofFb2NNfw9Zjt8FUMk5n8DqTI2vprweX9NiKdja7tKerYf6JMYrlraHa1bbNaLqAAndzy68oMa2iGmZPtIJPvGhUVWyfPLz0C17SWhrq4aWHF2S37w5AHg402VbuqCl43YKX_l427lKhigi7w70mO6vjk91-GuKqCRM4azVVtVZwqGsgwKebRnXYmsaT8KjDqpoM0AZCYMQ3es9Lox4dVgT_GvOkmHXef2IlfeROh4ldU7DSnSRxzswAtugMhsEk9KchPtrfNbIphCn_6KKr5W44iJkwVGlamANZ0xAXnZla7nLaie-EYEyYzBJc1I29XO_9_pr18-ADniYOgu7o_ugQgLjrytSdxXJ_MG3F4GZDwR2_lruSKWa5oYoRzl6sN3pLOsidS-AffXhdWNaVlgljc1R0yS54xVu9lY0FVwSWSTteN0WxJ2UXdF6zPjbD-DFjx_BwF56_qQQb0-MKBHT7Ynlp4VP06DZdzgVgoVSiHLpe9ep51UHZy-OzjkW_afUWN7LpyrXYZ0Oo_OngetRV-6PzpeOj0hudExdYwV-okpb0J8IMpMTnT92U4C-FY0pvyTEvSZxbJxor_JQLycSutLNB_FHU5ZCvYwUIWkixo8rimby2EIUUFdv0oRcSblz73vuD-8U-TA4p6mI-zC5X5p2R46SrwqQY0MgM4daOKhvV9mXxlHflXh-MUtwnSFNaDqjvTPuNohU1xZZ1aHZm-lVN4rGwo00bO8N3bgnygeLm0TqiN53Naq_VMH22pH1YKchgBXK389FqedKEfe_bPAX30K0xjYabPl57eL2RZS65mUjoI9YvHl5n_9nextv_Tb4MEe8MKR5R2dbNoV04MQIFHM0RdGtSGg-vOd_VfqPk_9mVxJ7CP5Z7eH2viNCVVLX28PpH31t6eH13c3s4VZOiAXNhFMTQViELEc29aH4ttFFtYZgUHk4GA5o3x1bVXVrI_2nubm7dyYaaG6LNQP9aLFpRwqTOCim0-QDYvaL0Shj17OG5h2fg4lxrqgAWATE483D2hZgtVbS8kaTUIM6oXjOlzWRL9MOO8JZaQejaEojmyveiqw0135pCloexaAX3vGHg1gdAHSky7Qyewbwu98iLlsjD8zedsjrp0kuXiHD-ICsPZ1b5riCcKKhVBFuLaOVNVx7OfoD_gPgDNEEQ5VJye3NmFeq13xvOF2quXC9xC12Zc97DIdPEi5ajUdD1oivwAcjHM2ghWiWQUS2F3o-0RoJn17ZbKAiIL0cWD8rRolf2cNjR6Pz9puYc2u3rATHXXUS3RFFYYIYRLRa9FNOukm_YIwWr_2Fmu4QK-9boDhDswtR17h-ixVf7hhaGlmjTpQlxyBOSCn25urX_2TEOjSola6Rh05QTzWzbD385l8XjxLZCKaoI47ScuMl6e3M1v7tCus1rZhBBebuBzaBUBjq-kxWCmW2bTwpZD2bxeG4zrVtYxtaIiBIxUfC2dHvKQhG9RTkpHo0iBZ28uZoEEy-Y3Sq5UaRGRG1ayLLuVhR7c1zDTYBxqny6b7hUUOLrghOx8Uk_67RvVCsePbzOmXCKyIciWJOmgfPWNK2ZaOTffXh7Gy3dDhXKxrocgsvfWyGY2CAAA86rVnTLUjYGtknGSApU2_0wso3qALPf9eFzsKdYFqi3BQL9vrDfLNguOdgH_c80KLMkyIar27N2B7eKCWNTcq9cs34UUuTpQWqjKKlteS6R7ZCgWLNfTIyHF8G-cwvIOfgdnvg9rfIC3bGNIPy_CCzVsLZ1brjLurtTBPbvAIQ7oDQgQZIWMZ7ioHPc3Ya6Hfhg5w0DxUTLSWLdsyoj56Ix5iyZVQVqoF5I-fDIOP-YAas_MhCfOh2nCdpoG-dHnY_TZIQ9HWPjLK0iRHKY9h9Ctooj5OQVcph_GDPMR5jpGDOa0VnyMUyrMsLMhrUVh9M0i8LPah9-onFAtuVw7cNnTakuqlHYs1dhz4IPhK0phEyVuYUN0rwyVP2WUc-OcxXWkWAcdYaDknwg6sMgOP5zkdoYl7Yj-tRYbSijWMNxrCQl0-JTYr2rCecrKjS9o9BAHUd-uNbVRhjDzmlgzyp8Jc21qOSbSjvJSrjzRVd9RSRjlFGb_7nVYgkaMYhPGMxjUv4Cg5_rLTgz8jYae1sENJ4OvB3to26J7m71Rj3fy8PADQPOB7meK0Wev9PqfMagR1m-jxGXyE8vexvliIb4hAZcpflf03Bw-8vV7bUoWQHN64CHBXTRC-ieu0p9d9CfGSzEMgp2ehJshafpXwerWnFdN3wU4PrQpZ7MOLfLu9pJ3h5m3XD83j5sPWzf7fQ-L3PDckXU81mJ-fw71S03-tXIjZTNWZWVrJkgRio3vU4BtW7rBjxekmL7enxFayJKWi7YGZvfGsNq9kJA_TutiXq8qpkxkK1-zZk0RJlJYDvOM08oBn0n5Ck5zRMt31GUqhXvy9FcEP6smf5KBNlAES7PKMFk_eR6hDBG9ZgO48RVElcBHfhZUkMY7_YYROuvsqT8vLfjGnzFz0-FD7-_P68dbSNex00qLWdpNty4WS7_zMd_MF0dGyO6Rs1tQHGaRp9Rhn8bzf_g9Djyh9nBwUkxZyEZZsd9OeBe9i4B6_OSNEaq8wE7hQ-F26n8DbUIwYyiDU9qMaHZx2qxD2_5To5-goS3Sun3YdbxNiIWn5RRmtPgHZP1HJ3_FJY6FkY0jbYFwSwgQTrc8qrWFs8tayhn4mSjZxQTG-j-zxTfq3hdk_eVFFuL81ctoOtAT6Wk5N_sE9m1fav6qcNvhHN2i2M54e2Gidfr81Fem9JdOzzjjZawhUUjGgFr0TJeQirtw6czq75szIOB3ZFrQG0U_83se983pX5QxSpGVS_ndlcf_f9p1edqa1R8o81YkFUFTQskG_OVMPFZZh3qyOzpU81ZOfvgY16rMsI8fZ45o3GAHh5A7UEbosxDfQzq3VZoPLaSnhAWzyKKHP7n8QWgB6v9GxZDld1P0dJ91889X_aiObq7_nJ39eWHE192hru3YxQmAAqj2ckb4IvyMipn0Yxc0MswxbMkS-NpdLG9jJM4SsMyDAuaB6Qosqgoq3xaxmVSJrggF-wSBzgOAxyFOI7DaJIXOMNpMMuqdBZVGfXigNaE8QlMi4lUmwv7sukyDKN4Gl7Y74tp-2VHjAV9QnbUw9ibri7UpX1Plbcb7cUBZ9roI4xhhtPLf9_X_vu-9rd-X3vRKn758y9ku2myu8T_HwAA__-BR2By">