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

    <tr>
        <th>Summary</th>
        <td>
            [LoopVectorize] Assertion `!NodePtr->isKnownSentinel()' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            vectorizers,
            crash-on-valid,
            generated by fuzzer
      </td>
    </tr>

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

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

<pre>
    Reproducer: https://godbolt.org/z/1e3Gb349s
```
; bin/opt -passes=loop-vectorize test.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 ptr @main() {
entry:
 %tobool520.not.i1570.i = icmp eq i32 0, 0
  br label %for.cond507.preheader.i1571.i

for.cond507.preheader.i1571.i: ; preds = %for.cond507.preheader.i1571.i, %entry
  %g_2481097.i1572.i = phi ptr [ null, %entry ], [ %spec.select.i1575.i, %for.cond507.preheader.i1571.i ]
  %storemerge9921080.i1573.i = phi i64 [ 0, %entry ], [ %add614.i1577.i, %for.cond507.preheader.i1571.i ]
 %spec.select.i1575.i = select i1 %tobool520.not.i1570.i, ptr %g_2481097.i1572.i, ptr null
  %add614.i1577.i = add i64 %storemerge9921080.i1573.i, 1
  %exitcond.not.i1578.i = icmp eq i64 %add614.i1577.i, 4
  br i1 %exitcond.not.i1578.i, label %for.end615.i1579.i, label %for.cond507.preheader.i1571.i

for.end615.i1579.i: ; preds = %for.cond507.preheader.i1571.i
  ret ptr %spec.select.i1575.i
}
```
```
opt: /root/llvm-project/llvm/include/llvm/ADT/ilist_iterator.h:168: llvm::ilist_iterator<OptionsT, IsReverse, IsConst>::reference llvm::ilist_iterator<OptionsT, IsReverse, IsConst>::operator*() const [with OptionsT = llvm::ilist_detail::node_options<llvm::VPRecipeBase, true, false, void, false, void>; bool IsReverse = false; bool IsConst = false; llvm::ilist_iterator<OptionsT, IsReverse, IsConst>::reference = llvm::VPRecipeBase&]: Assertion `!NodePtr->isKnownSentinel()' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -passes=loop-vectorize <source>
1.      Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "<source>"
2.      Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "main"
 #0 0x0000000005c0eef8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x5c0eef8)
 #1 0x0000000005c0bd24 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #2 0x0000735c31842520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x0000735c318969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x0000735c31842476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x0000735c318287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x0000735c3182871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #7 0x0000735c31839e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #8 0x0000000003a0a2d3 (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3a0a2d3)
 #9 0x0000000003a15dba llvm::VPlanTransforms::handleFindLastReductions(llvm::VPlan&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3a15dba)
#10 0x000000000384ed7d llvm::LoopVectorizationPlanner::tryToBuildVPlanWithVPRecipes(std::unique_ptr<llvm::VPlan, std::default_delete<llvm::VPlan>>, llvm::VFRange&, llvm::LoopVersioning*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x384ed7d)
#11 0x00000000038505c5 llvm::LoopVectorizationPlanner::buildVPlansWithVPRecipes(llvm::ElementCount, llvm::ElementCount) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x38505c5)
#12 0x000000000385fbd3 llvm::LoopVectorizationPlanner::plan(llvm::ElementCount, unsigned int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x385fbd3)
#13 0x00000000038706da llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x38706da)
#14 0x0000000003873350 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3873350)
#15 0x0000000003873add llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3873add)
#16 0x000000000312d03e llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x312d03e)
#17 0x0000000005978df1 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x5978df1)
#18 0x0000000000f25ebe 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+0xf25ebe)
#19 0x00000000059773aa llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x59773aa)
#20 0x000000000096ef9e 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+0x96ef9e)
#21 0x0000000005976d61 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x5976d61)
#22 0x000000000097915a 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, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x97915a)
#23 0x000000000096d1f5 optMain (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x96d1f5)
#24 0x0000735c31829d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#25 0x0000735c31829e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#26 0x0000000000963ed5 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x963ed5)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```

llvm version: b99970d929c0da9cdaa7a82f16197b07c00e919a
Looks like https://github.com/llvm/llvm-project/pull/184340 doesn't fix the root issue.
cc @huntergr-arm @MacDue @fhahn 

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWl9z46iz_TTkhbILgf5YD3lQnPHeqd_M3VSSmvuYQqJlcyODFlAmmU__K5BsWR4nm8x6q7Z2ayeRoLs559C0EAq3Vq4VwCVKrlByfcE7t9HmUrjq-cfL94tSi5fLW2iNFl0FBrECb5xrLWIFoitEV2stSt24uTZrRFc_EF1FwH4rWZxbRAqUkuF_UiB2hUupEF3p1uFZy60Fi9h1o3U7e4LKaSN_AHZg3bxp8OwOkcJxswaHBXe84S-6cxixa4wohdkWsQJmLc0IYgWj4Ye_jaa3_iqNw4-Z3F9EdIFYEdHFrF6Q4UqFpnTnnsazO29G6YjDGdk2sMPwvEgf0njWqUelv6tZI1X3PFurrndBpBBQSwW4dQajmGy5J79ANMcou0KkAOXMixeSFBjRxOlS6yahZK60m8soychchrFktW0x_IElo5ggusReToxLgxteQuOda23mlVYiIdm8NbABLsCEINFc9mjeNmEF9hPUGhB2IPgnQenS2_QkPBxEk_UDjRcRybNgRAf47Ub2GiRXWHVNc-iJUXId7pMr32ZbqOYWGqh6BZL9OG9iCVEGDNZpA1swa8hzGpEFCUbsAItM4zAeeQMIFyKN4uCafQzDaRZh8L4Jy-jV6fYDBalOaLnrCxIOZKcwwyBciJ7hG1L4UNEuBjxL51ntcSyO066P9rMk8S4Ne0anAnmzSZKCEmmUhO78RPc7cvgowscT14M24HZCn8o5UqDs-rh-HVzr1oWB6cpo7RBdNc3TdtYa_f9Q7W4RXUlVNZ2AsaG4vvfNjbTuQTow3Gkz34S646sPDmasQKyY2iC2_L11Uit77yX7bG_hCYyF_maplXWIfeo9DdRgQFVwlmi6HXxoMRSvyvf7dfJdug3eBQrSHw8owHHZ9C1KC3jQvTViy9H0280tVLKFK94jcKYLv2ve9A1PWoqfGzzAK-zX0EgggOjNxr5lj_ew57wyT5lP6aS-KrACF9aC8ZGxTyAa_a8WcOPMDLFP0v7HPz_uQDmpoOlVRjTDNZcNiDkixc2XT8XdJ2y7cisd5rjs1thAq43DTh8_kKXbdOW80tsx7Y6yU1rbgUV0hbkSeEhS7DaAK8PtBpe8enSGVzD0W2e6KsjihzO73UDwKLu1R3jnePWIRbdt-wcamSOS3xi9NnyLuVl3W1DODmvGrx66qvS2lQ2YGTy3jTZgfFvD1XrGd2LZmTOdekR0dbBx0D4Eb1t_37m2c3OLZ3evbygQW1rdmQr81JEi8shuO6WkWmPv4x_ldacCQUQXU2_ElkrPpHJgGuBPMKu1qUDMtGpeELtSejQ96vKj-XmkWCu81aLzGwdKJ2jCRoGeAnRWFAHCjqKP3m9FaP-4YgSTZ7L7L6kIQL04SGj7YvuLGyOVCxN975PDa7U3Mvz7g7bOAN_6pKdLLJULWx2fzn9pxhG9Is8DLK9oDzo6Al0KGuM7uVa8-R-uROODLwKGJbZyLVWtH1woYruCUnh4vYedV61PXBL-9QPQYYCMJRWLFjFNKBnYNLJEdDVs_w62fb6jmls9TwPm4DIiZtOAeZrXFW7dxgAXD4-yaT4WPfiP0eNjuHGW4rUN9D4KO87SMXAyDUwXWc0wL33t-VDY4DiGTX8KG5UfDhiVY8BsGpDlkKcfCxhcxoCLwwxjnHAq2LnSeQg3DpZPB4sSUfLJQ6Xh6t5wZWtttsN63IQ8X0klvnDrbkEMRXqyMINnWJJnW4sDvB68X4qTAsIWMYhMHID_onX7bahP3Af2kFR4mUSscOblXl91shEB6v9Jt9k9Qj0T60Rv1yn5RwcPrTNHu4fAb4n3hgJq3jV-89GAgxPG_gn-Kew8x47VLVdrGErXMXRjpfbVeagZ55KxF2qUMZrKmJCkSt4tY7lX0B5LOIb41IB_Di911xfG13rOyDGwGDnSI451Kdi7ObZhqt_g06lwmCHO_PAZcI4s2JRFRlLBX2EBN9wO67U1ugJrfe-ERd9w3tQKkEbA8RFgxhLy54BNpz5v22YCdrXfKZ21pPSQRsDJMWD_WvsewK-DPUz3QvHmxUr7lSu-hmlF2Tv5InFuklwcLPh0QjKigrDDl7bDtyfP8asW0JyGeqJoHYrzS9z3Lzr_bFF72UZRs8nGMM8Woo4OQAYh3wL4L9ZqUGPUarLFITVNoDxHAv5tGv-L56YXf5ya_CiNM8YPHzFfwwvlvd7h8ZIXgrfhEOMU297hQ1wHl78hCz2ZPVU62T6SPIU6_1gW7rgt3ynQLyjwWhL9c2TtdRtVjY4SKBXpe-rgKS3_LRINKowa0WnmZXmUHC4y04W0uZEtNFJNDzzunJFqfQv1qbT7iex9-H70lVebEKc41ftFloabl8-q1v2u69hK6-b3cOC1ks2JIH-p-xU6hTH8xbcezk7QpOnWUv1ck0f7_fvY_myNLZ-0FHgio48VXv78PIaX7xOVXrfuwWk91ICexX-kEm9ZfQMjawlmZ1f6nl_-fb5VGnJszEB2VPtEVCdYt-4rl-p8lcFHHcc8Oiqiucg_eLIVXMaAx0dEOcQEPzx4nwfruHEP25HOu4eA-GCI9EgnBiLBffDzyeSD9kPuTq4dmK1U3IHA4WtHf56GWIHvPv929-m3b4gUy2FIbMB1RoFPexyx_PjzESl8ruKn_jjBG5V5nmdE5DSviOB5JTjP-ILWURrlWUmyihDIo5wj4vf0jxY38hE-ftzfhm-uq2gRs5hgocEqRDOHa_kcjvCN1g6HbwJzRIqqwigmm045MGsz42br77_y6roDf1Vv-EZhRIoLcclEznJ-AZdRlrEoJZQlF5tLThKSsijORV7zJAMRxbHISZIu4gWPOFzIS0poSlhEopQRlswrsYiSKI0jTolYpIBiAlsum7lnMtdmfRHgXUaLJF3Qi_DF0Ia_WKB0f_JtLKIU0SWiNHzGmGk1e-KNFPvmNSgwYTLLF1x3P3749KAoub4wl0GzsltbFJNGWmfHsZ10Tfj7iMmLFUqu_8pXnYvONJe__uVmUOLpkv43AAD__ydyXs4">