<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/110193>110193</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [SLPVectorizer] Assertion `OpIdx < Operands.size() && "Off bounds"' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:SLPVectorizer,
            crash-on-valid
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          dtcxzyw
      </td>
    </tr>
</table>

<pre>
    Reproducer: https://godbolt.org/z/6GbP5f7qa
```
; bin/opt -passes=slp-vectorizer reduced.ll -S
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"
target triple = "x86_64-unknown-linux-gnu"

define i1 @main() {
entry:
  %cond.i112.18.i308.i.i = shl i32 0, 0
 %cond.i112.19.i315.i.i = shl i32 0, 0
  %and.19.i316.i.i = and i32 %cond.i112.18.i308.i.i, %cond.i112.19.i315.i.i
  %cond.i112.20.i322.i.i = shl i32 0, 0
  %and.20.i323.i.i = and i32 %and.19.i316.i.i, %cond.i112.20.i322.i.i
  %cond.i112.21.i329.i.i = shl i32 0, 0
 %and.21.i330.i.i = and i32 %and.20.i323.i.i, %cond.i112.21.i329.i.i
  %0 = trunc i64 0 to i32
  %conv85.22.i333.i.i = or i32 0, %0
 %cmp3.i.22.i334.i.i = icmp ugt i32 %conv85.22.i333.i.i, 0
 %shl.i111.22.i335.i.i = select i1 %cmp3.i.22.i334.i.i, i32 0, i32 0
 %cond.i112.22.i336.i.i = shl i32 %conv85.22.i333.i.i, %shl.i111.22.i335.i.i
  %and.22.i337.i.i = and i32 %and.21.i330.i.i, %cond.i112.22.i336.i.i
  %1 = trunc i64 0 to i32
  %conv85.23.i340.i.i = or i32 0, %1
  %cmp3.i.23.i341.i.i = icmp ugt i32 %conv85.23.i340.i.i, 0
  %shl.i111.23.i342.i.i = select i1 %cmp3.i.23.i341.i.i, i32 0, i32 0
  %cond.i112.23.i343.i.i = shl i32 %conv85.23.i340.i.i, %shl.i111.23.i342.i.i
  %and.23.i344.i.i = and i32 %and.22.i337.i.i, %cond.i112.23.i343.i.i
  %2 = trunc i64 0 to i32
  %conv85.24.i347.i.i = or i32 0, %2
  %cmp3.i.24.i348.i.i = icmp ugt i32 %conv85.24.i347.i.i, 0
  %shl.i111.24.i349.i.i = select i1 %cmp3.i.24.i348.i.i, i32 0, i32 0
  %cond.i112.24.i350.i.i = shl i32 %conv85.24.i347.i.i, %shl.i111.24.i349.i.i
  %and.24.i351.i.i = and i32 %and.23.i344.i.i, %cond.i112.24.i350.i.i
  %3 = trunc i64 0 to i32
  %conv85.25.i354.i.i = or i32 0, %3
  %cmp3.i.25.i355.i.i = icmp ugt i32 %conv85.25.i354.i.i, 0
  %shl.i111.25.i356.i.i = select i1 %cmp3.i.25.i355.i.i, i32 0, i32 0
  %cond.i112.25.i357.i.i = shl i32 %conv85.25.i354.i.i, %shl.i111.25.i356.i.i
  %and.25.i358.i.i = and i32 %and.24.i351.i.i, %cond.i112.25.i357.i.i
  %conv109.i.i = trunc i32 %and.25.i358.i.i to i8
  %cmp.i.i54.i = icmp eq i8 %conv109.i.i, 0
  ret i1 %cmp.i.i54.i
}
```
```
opt: /home/dtcxzyw/WorkSpace/Projects/compilers/llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:3247: llvm::slpvectorizer::BoUpSLP::ValueList& llvm::slpvectorizer::BoUpSLP::TreeEntry::getOperand(unsigned int): Assertion `OpIdx < Operands.size() && "Off bounds"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: bin/opt -passes=slp-vectorizer reduced.ll
1.      Running pass "function(slp-vectorizer)" on module "reduced.ll"
2.      Running pass "slp-vectorizer" on function "main"
 #0 0x000075e591a13b52 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.20.0git+0x213b52)
 #1 0x000075e591a10a1f llvm::sys::RunSignalHandlers() (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.20.0git+0x210a1f)
 #2 0x000075e591a10b65 SignalHandler(int) Signals.cpp:0:0
 #3 0x000075e591442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x000075e5914969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x000075e5914969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x000075e5914969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x000075e591442476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x000075e5914287f3 abort ./stdlib/abort.c:81:7
 #9 0x000075e59142871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000075e591439e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x000075e58c574c14 (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.20.0git+0x174c14)
#12 0x000075e58c5bcafe llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallPtrSetImpl<llvm::Value*>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.20.0git+0x1bcafe)
#13 0x000075e58c5d0eed llvm::slpvectorizer::BoUpSLP::getTreeCost(llvm::ArrayRef<llvm::Value*>) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.20.0git+0x1d0eed)
#14 0x000075e58c5d68cc (anonymous namespace)::HorizontalReduction::tryToReduce(llvm::slpvectorizer::BoUpSLP&, llvm::DataLayout const&, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo const&) SLPVectorizer.cpp:0:0
#15 0x000075e58c5d997a llvm::SLPVectorizerPass::vectorizeHorReduction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.20.0git+0x1d997a)
#16 0x000075e58c5ddf28 llvm::SLPVectorizerPass::vectorizeRootInstruction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.20.0git+0x1ddf28)
#17 0x000075e58c5de0cb bool llvm::SLPVectorizerPass::vectorizeCmpInsts<std::reverse_iterator<llvm::CmpInst* const*>>(llvm::iterator_range<std::reverse_iterator<llvm::CmpInst* const*>>, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.20.0git+0x1de0cb)
#18 0x000075e58c5e2299 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.20.0git+0x1e2299)
#19 0x000075e58c5e8c0f llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.20.0git+0x1e8c0f)
#20 0x000075e58c5e9876 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.20.0git+0x1e9876)
#21 0x000075e58ced5195 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMPasses.so.20.0git+0xd5195)
#22 0x000075e58a15de5d llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.20.0git+0x35de5d)
#23 0x000075e5904d9d05 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.20.0git+0xd9d05)
#24 0x000075e58a15bf96 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.20.0git+0x35bf96)
#25 0x000075e5904da6c5 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.20.0git+0xda6c5)
#26 0x000075e58a15cb1a llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.20.0git+0x35cb1a)
#27 0x000075e591c041c1 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) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.20.0git+0x2d1c1)
#28 0x000075e591c0f944 optMain (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.20.0git+0x38944)
#29 0x000075e591429d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#30 0x000075e591429e40 call_init ./csu/../csu/libc-start.c:128:20
#31 0x000075e591429e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#32 0x00005b421cc0e095 _start (bin/opt+0x1095)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1T4zgW_TXmRZWULX8_8BACme5a2KZIL7NvKdlWEi2y5JFkGvrXb0l2YstxIOntmWVnp4sGf9x7dO85V5ZkGUlJNgzjSye8csLrC1SrLReXhcpfvr9-u8h48Xr5gCvBizrHwvFnYKtUJR1_5sCFAxcbXmScqikXGwcuvjtwEf2S3Yfr-DfkuNeOO3Mit_1pTv0rkBHmwAWvFJhUSEosHf9a0mryjHPFBfmOBRBYt1dMKQWTZeOpkNhgBQqkEEWvvFbA8a-BAyGelI4_w5MKxq7jz3xofulTzz7VR1Fgfk3I_sCDiePPPJhM1onbHjFzKdq5R8Fkqc0gtEJRglQU78J4SaJVFExq9sT4NzahhNUvkw2r917N7wKvCcOAeMAJ3BJpKhIHpsCJrxoDzJR41fyaMwAcGOacFVPieXDqJVPiu8mUTIlpV24pID4ErgPnoKV44JFOie-Fb3toF8SK1jjaGyNWGONjMWiMY62Nxg_dKfEhPC2axtgfi2YQ7EEcvXbG4_D0_fRdHk0Y2tZ3j4XRi_IwjK6ZXhiugVGiZjkgUQBcoLhGtCN9TsKpzsD3Owa46KLUQD3By0qbNQ7B3oHkZQXqjeqpOMAdJCy3VIfutSa9usEU58rU7VhrGmYfWnMwUoyNQ3RA-9HIjkQ0LBRzJz6qUCfgoUJdRD1Q73SF_CnxA_eYQl7foyXNeHjvStQBD_tGx4ixgW9r1DV3VKMBJcbDf0skO7YjIQ1FMneCoyJ1Gh6K1EXUA4WnixRo__iYSHBEJOORvCtSB3xcJGOTvi1S19ypImmP0H1LJDu2IyENRTKw3lGROg0PReoi6oH6p4sUav_gmEj-iEjGI3xXpA74uEjGJnpbpK65U0UyHvFbItmxHQlpKJK5kxwVqdPwUKQuooECntuVaCtXD7LXotYvscXQ13USnQr4N0CSAbRFvsA9dnf-7Twpvh6fOtqnvFJ6OurAxZaX2IGLds7qwMWvXDwtK5Trq_eC_wvnSjpwkfOyIhQLfUzpczmpmnvtqf5DMgcuvgrE5JqLUhs-7ialDlwsb-_3p2KaV5WZIAaxjsMg-DPHn0ladTPZ5tIV_0e1vL1vTh4RrfEtkcqB0RluXwXGN7u5oT_bYPWlwgKxwoFJzcwsvgCEKQemOp6ZlFgowhlwIvdL9bl4AY4_B62PnEqTUjP1hJEOxYHwy3oNMl6zQupZK4zBGhGKi2nD-P3tzWx5A2SdlUQBBLJ6AwSuuFC6KAbrAqK2dTbNedlj1-acSFljTXFTwCyndYGB2mKQCyS3IEP5kxIox23zS4XyJ1DUZbWfHbtTYP7dC74RqARIbOoSM6XjOG-Z0eB5Ld5DzRhhG6D9NC_rmuWaSwcmNoImG0LAGSh5UevFAIQ90N3UHx7BHYIZpF1j2qBZIMD9XMp3gfviuq4bhzhMPeT5WQj7RfQqm4N7QZgyjH0VpiMknZFA31ZcKoFRaaSft2UDTD38UHe6vX282ymc1YQWDlw0_E-n-35FSabtlnWla2YquZ47uxuiHHjlvkCTiyZ0n6w3SNZF3nos2YeaLcmGIfoJsaKJKPkA-ehwrXzgMJ8sCoEVuQOTVovmsmyfMq75vwfyLaAggCF022yb0NrFaG8Rqm_kOsbIRGdcrOACGzON0nUOVqtKbQVGxeqJULoiZUWx7mDIFKimglWKOnDRN5vmjj8L9Po6jjr88BR8prBgiL6JHJvFeY-NaAy57_YmXJIO4OIhuUEcgY00ehik5nBXC_JVFrjSRVNxSV4cuBCISGywoR4aehwkNjRM4rUPUKafoAZKFY185lITnacz7hDSAwQvAytGV5SjYlVw_cAwWISZdPXlUm5y1MB5XqxDamXXXcx-oAR-itPovFIyLvtS0pj9fpvkYRzkXvB7d8bDfrkfqoc90zMBWRFDO-IsR2t8xti8wcoMzXOuR_XkBwZ1kHOmfWf6cdz5z4RArw947fjz7qKZQGhT_8a2XpaI0nslllh9Lit63Cn6A56O5whi-LYE8W1BChfj4jxBNLUHerzP54fixaRt8RIMeImSPNcRI8bZa8lrCRgqsWziTJv8PmlwzhSiD3pqYiYy5oYSr1-5uYZPrdpmvtCZXiOFbpvXsW0FDwy-mnel-yn1Z7bmB1Xe2NySTCDxqi16WCkYm3X3xkPNSjhgJU1j1O8XfYR7JNtpwz7HT1x0zPSJuP_0-e-8wAcBf2ZSiZ394N4VkiS_ojx_Orh1Bq-n0Ga6e5PYQXf_FSMz83sibPP46UN2eqOSVdzRQMZiDZMzZHzgXFnKfGglP5YWmmpLi3igBXbzDGSc0zMEmZeV5lc6_lyqol184GcsJF4RhQVSXFhV2zo4cNaNh_6Nqd6eljvXlUBsg38G-M9R_WMpqgWzFE1sRTGEaXqOmFtEmPzMWmqSPx1jhhCLsXTAWJK76_cZEzUzj-M-RYv9C4TB02GZI4rEzTOn9egz6IeGz8Np5OwBy5pqDgd3bjmvRl2ueUmY7kN6HnUIKGVdVjriOcq3h_evcYlYgYsrMtLml0qRknw3a8gHXCLxdFMSpfTq96M9F43k_ZqA7qAm0iSOTqqJ0-phxhB9lUTeIYY22H6A7Z0-4mhuiLCYsleBuAi9NOxlWmCFCG1HZyTlHS8wHc_X7jEHDP8Qgfrnz6TMvXnFOZTFkG6pYq10kRcWOOwvrIwSb2X4F9m3j3dzLg56gG-otLi2XtO5QZEW7s_oAb-bRn9pe_t4988kmvMC_4LZQWfS-lkCB4POlK3T_mBwZ_YEvvJdVlq4WYEqMzMd46xxOIux1uWj9QXNhEVVOOgLKMrP6ws7buYnEvwDDB4r5f9FWd4oY029pU00KOM889AJz5sxRf7_iB6vf02hxbG9q5C7gZd7vRRFbYr3nlSYEma_jlsqQdjmAa_Hiv_I-4Y7lG8NzntrhWapMrTinH6pVVWrBaEjIP_R7SPpjL6aNZzQekPY4fjU2e_X__t9Wn_-zEkB7FdASMorrateaJiH08ioxyu1Upy3T6Imi78RVrxl9YgFWRMsdnaZvnP23z9qu_JLpa4FecbiYMOy8HLPqtlkULPrNAgAr9QdIuy_Ha2fpIG1hwOHW2NpkbpgtaIky1dSIaFWOaJ0td8hy2V9uIfX7hKOOU23jj8L2y-Dd60ONuQDmOLABcaHMKKGDTWHGn1i0JtNOfMFMuzeZw82vltQK5WxLEbB_TjVYXfYuwVAmAXQy3MXu2kIGlSt6f6riWZZ5_aWD7OMC4VNr8q5wOZTjP72xO77nIvi0i9SP0UX-NKLYeynSeh5F9vLFAVrHLl-FqLcyzw3XbsBjDMU5Rny1jm6IJfQhYGbwth1w9DzpusYZ3mIM5wkvgfXgRO4uESETnXxTLnYXJivSC49z_VS_4KiDFNpvmWHsO2u1nrRfNYydyA0n5hMOJs8I0oKfTm8vhCXbU1upBO4lEglu4YUUdR8Jm8Dhtc_91Obi1rQyx__lqYl4vkS_jsAAP__M34msg">