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

    <tr>
        <th>Summary</th>
        <td>
            [LoopVectorize] Assertion `PredicatingBB && "Predicated block has no single predecessor."' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            loopoptim,
            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>
    Crash reproducer:
```
; 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 i32 @main(i1 %cmp.i679.i.i.i, ptr %p) {
entry:
  br label %for.cond1.preheader.i

for.cond1.preheader.i:                            ; preds = %for.cond1.preheader.i, %entry
  %indvars.iv.i = phi i64 [ 0, %entry ], [ %indvars.iv.next.i, %for.cond1.preheader.i ]
  %arrayidx.i = getelementptr [256 x i32], ptr %p, i64 0, i64 %indvars.iv.i
  store i32 0, ptr %arrayidx.i, align 4
  %indvars.iv.next.i = add i64 %indvars.iv.i, 1
 %exitcond.not.i = icmp eq i64 %indvars.iv.i, 1
  br i1 %exitcond.not.i, label %crc32_gentab.exit, label %for.cond1.preheader.i

crc32_gentab.exit: ; preds = %for.cond1.preheader.i
 %div.rhs.trunc.i.i.i.i = sext i8 1 to i16
  %0 = trunc i32 0 to i16
  br label %for.body222.i.i.i

for.body222.i.i.i: ; preds = %safe_mod_func_int32_t_s_s.exit.i.i.i, %crc32_gentab.exit
 %p_188.addr.2816.i.i.i = phi i16 [ 0, %crc32_gentab.exit ], [ %inc272.i.i.i, %safe_mod_func_int32_t_s_s.exit.i.i.i ]
  br i1 %cmp.i679.i.i.i, label %safe_mod_func_int32_t_s_s.exit.i.i.i, label %cond.false.i683.i.i.i

cond.false.i683.i.i.i:                            ; preds = %for.body222.i.i.i
  %div16.i.i.i.i = sdiv i16 %0, %div.rhs.trunc.i.i.i.i
  %1 = zext i16 %div16.i.i.i.i to i32
  br label %safe_mod_func_int32_t_s_s.exit.i.i.i

safe_mod_func_int32_t_s_s.exit.i.i.i: ; preds = %cond.false.i683.i.i.i, %for.body222.i.i.i
 %cond.i684.i.i.i = phi i32 [ %1, %cond.false.i683.i.i.i ], [ 0, %for.body222.i.i.i ]
  %inc272.i.i.i = add i16 %p_188.addr.2816.i.i.i, 1
 %exitcond.not.i.i.i = icmp eq i16 %inc272.i.i.i, 0
  br i1 %exitcond.not.i.i.i, label %if.else417.i.i.i, label %for.body222.i.i.i

if.else417.i.i.i:                                 ; preds = %safe_mod_func_int32_t_s_s.exit.i.i.i
  ret i32 %cond.i684.i.i.i
}
```
```
opt: /home/dtcxzyw/WorkSpace/Projects/compilers/llvm-project/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp:2885: virtual void llvm::VPPredInstPHIRecipe::execute(llvm::VPTransformState&): Assertion `PredicatingBB && "Predicated block has no single predecessor."' 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=loop-vectorize reduced.ll -S
1.      Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "reduced.ll"
2.      Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "main"
 #0 0x00007088da627ab2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.21.0git+0x227ab2)
 #1 0x00007088da62498f llvm::sys::RunSignalHandlers() (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.21.0git+0x22498f)
 #2 0x00007088da624ad4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007088da045330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x00007088da09eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007088da09eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007088da09eb2c pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007088da04527e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007088da0288ff abort ./stdlib/abort.c:81:7
 #9 0x00007088da02881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007088da03b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x00007088d38e230e llvm::VPPredInstPHIRecipe::execute(llvm::VPTransformState&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x2e230e)
#12 0x00007088d3889738 llvm::VPBasicBlock::executeRecipes(llvm::VPTransformState*, llvm::BasicBlock*) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x289738)
#13 0x00007088d389abd5 llvm::VPBasicBlock::execute(llvm::VPTransformState*) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x29abd5)
#14 0x00007088d388c05d llvm::VPRegionBlock::execute(llvm::VPTransformState*) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x28c05d)
#15 0x00007088d389cff5 llvm::VPlan::execute(llvm::VPTransformState*) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x29cff5)
#16 0x00007088d36f1382 llvm::LoopVectorizationPlanner::executePlan(llvm::ElementCount, unsigned int, llvm::VPlan&, llvm::InnerLoopVectorizer&, llvm::DominatorTree*, bool) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0xf1382)
#17 0x00007088d3709d6f llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x109d6f)
#18 0x00007088d370bf11 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x10bf11)
#19 0x00007088d370c586 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x10c586)
#20 0x00007088d42ec9c5 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMPasses.so.21.0git+0xec9c5)
#21 0x00007088d1127444 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.21.0git+0x327444)
#22 0x00007088d90db9b5 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.21.0git+0xdb9b5)
#23 0x00007088d1127960 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.21.0git+0x327960)
#24 0x00007088d90dc375 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.21.0git+0xdc375)
#25 0x00007088d1128ae5 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.21.0git+0x328ae5)
#26 0x00007088da7912e9 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.21.0git+0x2c2e9)
#27 0x00007088da79c306 optMain (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.21.0git+0x37306)
#28 0x00007088da02a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#29 0x00007088da02a28b call_init ./csu/../csu/libc-start.c:128:20
#30 0x00007088da02a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#31 0x000064bed9823095 _start (bin/opt+0x1095)
Aborted (core dumped)
```
llvm version: 94bcd9ceedc7e194b6296e4a293c60b8e38d1b67
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWl1z5KgV_TXyC9UqCfT54Ae5Pc5Oxa51jacmeetCAnWTUYMCyGvPr08BUuujZa9nspt4k9312GrBvdxz7gFdUGOl2J5TeunFV158fYE7fRDykujq6dvzLxelIM-XW4nVAUjaSkG6ikoPFV5QeEnQ_wSFh65AybgHb0SrwabFSlHloetGiHbzSCstJPtGgaZK-00DNg9eUGgs91QDgjVu8LPoNPDQNfAgpJujhwq6aWEaeKhA0P4yH8P5R3OVRPbXhp0uQph5qAhhtqmzoL_i9lYymCfR5sF0g3CMQ0vWNnSI4SlLdkm06fhXLn7hm4bx7mmz550z8YKC0JpxChiCwIuCIzbgMxYCD8bVsfVZkuY-M_97cAtaLU1D68EceOmVFxSUa_nseASglKDBJW1Mn1pIvxKchH4r6YFiQqXP3JDrTagAr_xnEtNKSlQP7AX_cGvaXFAmIg_GjJNHLJXPHn1mjdsDAyyJgBdfgWBqAbz42n6OrxaGnD7pk_fVka1tPyKWEj8z8tSPt6eaNvRIubb0xVcwTsCTYbwfb2R1awMLhotF9Na_0kK6dAUT23FIcxM3bM9BtMKAA2LDwoSsDgK3IDSWhpUnpg1Sn4vBilXHFtB_vmppdOAUNHdgOpz0UckKwd2eco1L3_Sbtb6innNDVLxVHg4WYY--PChfy45XTtw9OkWfNGAZCIEWgIXJwGBgW21_R_20fal6s9RACPtZc1L8_PZazArXdHcUZFd3vNoxrhHc6Z3aKQtznIWr7Dlo7S7MMh8TIn2YhckEmlV9mMxUf-blbAZUMIWzgd8S42kunHRwvpKcGHsr6FE4Rk81bhT1WZKhKc3rTT-wsCxTCHrZDIwOciHs0ZEK44HTVXENLkJr9s2qzJnNnRpVIXimqjdxZBl4U8817a1TNy54Z4wMNizJoqXMzLPEKSgclLbmfqq24KWxpgvrVI_jGuaIXFX-y4vZycVpQXNulpIPXlvQzrTJap82ikZhutL4wtpwZvO6XtdF-0aFACCpdvk5S5-JJr1e1kOTa9G6pRbeHMSRevCmr608ePM3Ib8-tLgyd--l-AettPLgTSWOLWuoNNdN83jctK6t_2j-sNKDN58l5qoW8mg6fhmqLHN932D-iVaspcqv2tZDBcyy2ITxyKTucAMeBSPAekOFh4ov9_eSko9c6fufPjpL10CfaNVp6sFs2vk08oPGpjHxYG68F0pRqZngwEsC45FVWDO-vzKqTjxotAKH-5SAshHVV3DACnABFOP7htoE0YoqJaRvyi2YghqzhhLfC4r72w_FwweguvLINMCg7PamMBVSm0XgoHWrTIzwxoM3e6YPXelX4jghbk4nU6qjhj2AOQGMV01HKNAHCipb85a4-qolrqgZ-0Hj6isg3bF1hVvgO1XdS7GX-Aiw3HemXDERvKUaltRU0-RUEIe9v08d54zvgbEzfBltGk5NDmYePLTlYsO4prKh-JFuaiErSjaCN88euuJi7Lpo8tAHkzEIgeDgKEhnKl8Ix4hcnQtfiOg3DcPGMGA03l0xDd36gwIQPAVBEKRBlhGcwBSXcCJc9azcxb1kXNsUfZZ2Rk0EK_EvO6G0pPhoZbgFjGtbjJtNwA_Ny9vbL3eDnsqONcSDNy7nvn-aoA0rTb-HrjUK9ZXwYegHe1O0XQVP0GIxeXBIwwXSKM_qNaSfOv7A9hw3P2FOXDjZOwBjwh3BwCUYTCIwC9vsl7gtXxXbM16LnfZgYT6btcle5r3FsIgF9p8bAM0GCKIYoaCnwMXbb-EmWzfTUJnAExuyNRkjjuYOc1rCCux2rT5IisnuK2uaHTu2bkuCrVgNObzVjQdvpt38ykNFZPajadI7j9_i3MwgjptX3aZ2JzuQkKy5ndq86ivLp77SJaEwpUBipqh1omwmBkmoZ0Voa7TTCsWePHhje1q3MDVb7N5rNvcKs6yuAS7Ngm39aOKyZW-5qMwuP-3N8zPzsAQ73uwagcmOCLNWWEeMW4zm9lHtK-x8hWFqgjEpNhNsvpYEqIzD9Ps0Y02cZozD2ZRFGYUooL_tU_X3ntXnE_xUSJxNcQtvBA_n4LM8RdkM_BVWrLoyj_gZ6r4w-RXwdiUYO0x8uZXhHfFikY-8oDkvOS5J_BZefp2Qd4Xa4hpRRws1VEE8LzA_0T0T_A8P2wIbYceLZFd1PU92g_kfGa4FNMKdPXBQUocom1Zjt0K0gy_7iDTwuTsxPjFgKZmy8ME9U7eic_VAx-2ZNAF9fbCk05Vw492PZojp0Ka4WPS5FkfGsRbys6TD6lIK0bwvui2fI9uzRzJKg5wk9Qts03us-vqwlcJsn0zrjGZ3450JLLSgRsjZAnJZh-GvQ5Yd_3hsmxncm9O26Z09R0MLaoScLyBXcZa8CfLLcKfKLzhunhVTd5jjvZmK2xUjsxF7dzQZIk40wVnxFkFa5dV0pSVUY9b0e0Gs1J0gtFkHO6PnnN4fYs_8_C-l5d4eWixzYkkfUzIrf8MQplEUTSDaNLwG70-mb7_cbYU80z6yVI5Ez0rtPCBlXv4W2v_dEvRnYm-_3P09S7aC0L9Qvkyvzd-YXbScRnkSTGDe2fO5z2KAZLJWENxqIdcJcwbfRVdv8u5mQZ4EI0_RYhZUKP2-WTAQs30juz9A30si_iPm5BUBG-rHxMQLAWeYxm9YZtbS8f_H8rryDYUjwfNzvjQPIc0n-GRnZXvPWtowPt9iPmjJ-P4Trddkf8bUZ_tlmDtcHayfYq31lpUSy-ePvBau6F72EqL5udNtp29Ys-Lk32p-AU4hJX42d6eptZw03Z7x82fS2F9p4u6d3rOgrX07NqPR-LoySe33lvnak060eqfNptJ-cij-yjh5rdcXKlnNqBz6uU3p9_79T53-_9zqa8keqTw7KKggzUfBpgvBVihIgGj1HWb8vx0qSlEw2VcsT6hxWGGw2zWsrHZKY6l3FW6a3emkuVLd-Sl4f8S-ZuQfPFSkkYcK1I-4PNTGMCuB7c8408tB3KXxvLGe3cG2_ZIbDJzHxUuy3uMMw1r4q55RlHqoiHvHQ4WfRCUleQZRkMfAuTRpPL3lHPby_ZpVlEJqaqdQJSS1L03pcGo2eTduEgkeqVR22hUgj8qK5BWlpEppmEdlAvOERhjmqEqCMqMoI2GZpBfkEpEc5fiCXoZplMUIQRhdHC7DOgwQxSSs8wRHZVYlcQjjjNYJTCAt0wt2CQMYBzHMwzgKYORDmEKC8hrncRLnQexFAT1i1vgmNl_I_YV9SXwZRmGeZBf2awnKflvSvQcVrWZH-55660F4etNp5Nrfs6-SN4JvHnHDyOn2nnIq3VvwZ1B33-ypFfTi6wt52Qt8r7woaJjSaoxGM93Yb2vONq5efP07v3y_6GRz-eMv2Hv6Hi_hvwIAAP__fyPoJA">