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

    <tr>
        <th>Summary</th>
        <td>
            [LoopVectorize][VPlan] Assertion `MinBWs.size() == NumProcessedRecipes && "some entries in MinBWs haven't been processed"' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          patrick-rivos
      </td>
    </tr>
</table>

<pre>
    Reduced LLVM IR:
``` llvm ir
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"

define i32 @main() #0 {
entry:
 %conv21.us.i = sext i16 0 to i32
  br label %for.cond3.preheader.us.i

for.cond3.preheader.us.i: ; preds = %for.cond3.preheader.us.i, %entry
  %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %for.cond3.preheader.us.i ], [ 0, %entry ]
 %add67.lcssa7984.us.i = phi i8 [ %2, %for.cond3.preheader.us.i ], [ 0, %entry ]
  %.conv21.us99.i = tail call i32 @llvm.smax.i32(i32 0, i32 %conv21.us.i)
  %cmp35.us100.i = icmp eq i32 %.conv21.us99.i, 0
 %conv36.us101.i = zext i1 %cmp35.us100.i to i32
  %0 = lshr i32 %conv36.us101.i, 1
  %1 = trunc i32 %0 to i8
  %2 = or i8 %add67.lcssa7984.us.i, %1
  %indvars.iv.next.i = add i64 %indvars.iv.i, 1
  %cmp.us.i = icmp slt i64 %indvars.iv.i, 1
  br i1 %cmp.us.i, label %for.cond3.preheader.us.i, label %for.cond.for.cond.cleanup_crit_edge.split.us.i

for.cond.for.cond.cleanup_crit_edge.split.us.i: ; preds = %for.cond3.preheader.us.i
  store i8 %2, ptr null, align 1
 ret i32 0
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #1

attributes #0 = { "target-features"="+64bit,+v" }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```

Backtrace:
```
opt: /scratch/tc-testing/tc-apr-2/llvm/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp:1061: static void llvm::VPlanTransforms::truncateToMinimalBitwidths(llvm::VPlan&, const llvm::MapVector<llvm::Instruction*, long unsigned int>&, llvm
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt --passes=loop-vectorize reduced.ll
 #0 0x0000596ae80c5b60 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2d84b60)
 #1 0x0000596ae80c2f6f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2d81f6f)
 #2 0x0000596ae80c30c5 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007a0a45642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007a0a456969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007a0a456969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007a0a456969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007a0a45642476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007a0a456287f3 abort ./stdlib/abort.c:81:7
 #9 0x00007a0a4562871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007a0a45639e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x0000596ae7260af2 llvm::VPlanTransforms::truncateToMinimalBitwidths(llvm::VPlan&, llvm::MapVector<llvm::Instruction*, unsigned long, llvm::DenseMap<llvm::Instruction*, unsigned int, llvm::DenseMapInfo<llvm::Instruction*, void>, llvm::detail::DenseMapPair<llvm::Instruction*, unsigned int>>, llvm::SmallVector<std::pair<llvm::Instruction*, unsigned long>, 0u>> const&, llvm::LLVMContext&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1f1faf2)
#12 0x0000596ae7135f3e llvm::LoopVectorizationPlanner::buildVPlansWithVPRecipes(llvm::ElementCount, llvm::ElementCount) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1df4f3e)
#13 0x0000596ae713c319 llvm::LoopVectorizationPlanner::plan(llvm::ElementCount, unsigned int) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1dfb319)
#14 0x0000596ae713f8a9 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1dfe8a9)
#15 0x0000596ae714273e llvm::LoopVectorizePass::runImpl(llvm::Function&, llvm::ScalarEvolution&, llvm::LoopInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::BlockFrequencyInfo*, llvm::TargetLibraryInfo*, llvm::DemandedBits&, llvm::AssumptionCache&, llvm::LoopAccessInfoManager&, llvm::OptimizationRemarkEmitter&, llvm::ProfileSummaryInfo*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1e0173e)
#16 0x0000596ae714388d llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1e0288d)
#17 0x0000596ae604a276 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0xd09276)
#18 0x0000596ae7eec141 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2bab141)
#19 0x0000596ae6041bd6 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/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0xd00bd6)
#20 0x0000596ae7eeae3b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2ba9e3b)
#21 0x0000596ae6049dc6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0xd08dc6)
#22 0x0000596ae7ee8cb1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2ba7cb1)
#23 0x0000596ae58c3ce5 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/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x582ce5)
#24 0x0000596ae58b6316 optMain (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x575316)
#25 0x00007a0a45629d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#26 0x00007a0a45629e40 call_init ./csu/../csu/libc-start.c:128:20
#27 0x00007a0a45629e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#28 0x0000596ae58abf95 _start (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x56af95)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt
```

Godbolt: https://godbolt.org/z/6TxWGMz6e

Assert: https://github.com/llvm/llvm-project/blob/c403a478076a16172d9b50e16c288b0d360f42ce/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp#L1061-L1063

Found via fuzzer.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWl1z4yjW_jXKDWUVQt8XubDj9rxdb2cn1Un1XLoQIJsNAg0gd5JfvwWSbclx0klPZ2t3Z6rHkYHznK-HAwJjY_hGMnYZpIsgXV7gzm6Vvmyx1ZzczzTfKXNRKfp4-ZXRjjAKvnz5dg0-fw3ieQCXAZwHGez_ASF2DeC6b7ZYb5gFFFss8KPqLAjiJQgQYrMmiOds1gbxPEv8x4wfHiJUBPE8QsVMxqhvu3VtCE1greatYHtIzQ3ZZcmsk_dSfZczwWX3MNvI7iDWf1JWc8kAjxEIEthgLgMHXYIAxRAE-aIfxqTVjwf_QIBSouQORWFnQu51GvZgAY8yAIFVDm8YCioNBK6YcEK10iFRksZhq9mWYcq0Rxhb9OKYeA6CeAFazagZ3HwZEF257t7swZAApVzSHdYm5LvB6nbLAc8SEKSLk37JHuwB5yU1IEiXfki6AHCs03ccYoUpzfJQEGNwXhbJMWhefbHXjn6BNtcWHnJTloMii7kABAuxz7QjZmga_BC6VKHCNXtM3z9Jb4DKEThp2jgNOxNBOGBz0rSA_bmXnGp3kHDKmjjz4tEg_tQT5zn2lEYBSqEfL8xWj608wjld0Wh81LuuO0n2Aj05i9Eg5Acp7fNwPlVDqKPzROqJ4lEwpT2bpkw7tYs07ZECPnpG2B8KVvoYpYNZP55Z5waFhwciGJZduyaa2zWjGxaaVnD74qR8o-S7purgn7FKsyELfia0VgPZCeGeseAbeYiFZhb0hO1NzJdjW53mVSeJ5UqCubXaOHukcvSvMLkHUtWaMSCVeZQESNXJ71xSYFpGOoEtrgQD37kQmtlOS9CwRunHABVSSXaYDJQRgTV7ZT4Ns2koptHYRGyt5lVnmRnqrAtR7ooA6qv5rGbYdpoZV67jpftEiyypuA3QVYAWuwAhcPB7Chcd4H6dz0ddh7Vt7M8Ck3urMWHPl8D-q2qtJwVaGaKxJdsArSyZWWYsl5v-C271DAVo5UI5-sOrAK3uNJamVroxAVp9Y8QqzZ-Ye74RWB57Q9K6RTSCWeT0GYstJ2CnOPVLsTMvnp_I9I2-TGDL7tQ1l7zBYsHtd07t1gSoOJENUOaSS5Q0doR7jdvetCC-OrZ-lsbqzrMxQHM_H5XcgE76XQYFXNog_jRAejEfsZsvn-a3n4DpqoZbgEHVbYBmrdLWlbCtta03HK0CtNpwu-2qkKhmGr5Zq9U_GbEBWnFjOsemFcDS6SSiowzYLQNEY7MF1T6DYa_-1jrW0K5pDymFIfD_3Wi10bgBWG-6hklr3pzZquOCzvQuSzZkd_juLfX7E9fkNiAr1Vowm7XYGGaCeCmUame7fdaB7rddoRCHhSWGAD5ACGFaZpgVkKTVsPvqk2AehzTfaC6td-7O83WcW42_r5WxmuFmSIfLjZ--xS_3L0AL-IBokVQZPK6wfvpOPUF1Vp_z5Gsnb_lGYvF_WFLBtDls3D7O2KjO6omx6MTYGJIUTMxytbCPYt-8n6LQ_38AigegHEOcpFmCUgQHV_oK8FBk6ywZ72NdBwmNCjNvnheZGJdMMcusrAlYr1u71QzT9T0XYs2bVjDHYuyXizBAK9laEaDVeFhIgnieuA15nh3x07fgS8u0xOJV5Nxv8EfRyM4hj8VehSvKE7j8NLhJnoGN8fnwSP1jgFah__ZoKGtdsWiV4Y4IGnPDPDbK3RvIEbqYQqMir2OAK1emPJSlffp8U2-dq8z5EaF8hhBVYC3FWihM11S5dxKPxaV31zU3ZkNwDxdFuTNpSLubP3AKGJeszN5HJS9yoJLDnEzKHGUQ1-gDVpT3ryWHZcQtKlOIJZOGXeP2rQh-mp4D-Cxr9QMQt8L6VWwsT5l77Zhi3WD-ZpeGlfEU9rbBQhyCYyztm9t3IPtg9biw63X0q_mzPLhX-yslLXvo-z6wvkZ1VOMaTXg3qa95FKd1zMbWKdXud0O-gDkuSab7Xq_R08v8we32281XRnjLpvT71Je_K9Wdpn_a85GO0zqpYzZxPD5xnMRR-WbHWz-jXnFyyvmPda2Ko3LiWnLiWl3gl1xjN9gM1aTVijBjXO_Etb5h_tFesAJPvUinXiQof5GZIy90Jz83rZh4sH9Xezb3bgkWWH_aKdGd7Xc6fG067bjz71CHenx2zFI1XGKr9J1m7FnvQihyv9Lsz45J8tgDzM8p-cIrjfX5EUvWYEkZXXBrnmmYG9M1rfPrCpPtcwucc3PiUu6wr7HEG7eZOhn1e2t5M0yBr6zB-v5Tw609M_JGq5oLdts1zdjej2QNg1F-Mq2zE9bERUHfxJq3MWYusXg03OzDNV4ODkLDy9bHeo6Kgk48z8eeZzDBKM9eWCud49eKMnHe_mc0mUbspwLi_v03RprCEuXTrVoxoRhjJEqi8TxwwX3N6L9V_FCFqyiJJgEsT5gaVfRXMPXDAv-3ShiFsKITwiN4QnjM4mr8JqFoJ9id2hvp8jCnuPXb53Mh6AXeFYBB5N_C15LF1cT_6ISvJSXv4-ve4as3Ru0nwvIS3f6TY01hQcmUauiEagWp3lJbzwX4fzduqMI5qSY1FU1eZ9KCxISlI7t15wl2w1smuJyeSt5azeXmK6vPEfSFre81JluP86M9a78ZPx2llPi9s21nV1ycAflL3S-4M9caP7rWccp8TES34fJ5nT-OP5wA1IcyfOVP_CdhdFgLl7phb1yeWz1Ua9dWqaFa9F78P5f0tVHfmOY1Z3o_rnI97_77gXxMC0RYOqFjMqVjlbmduWrtNebyAw3J0ziaFpSTI1RU0hKC9VrwiqyNxdquCRZifTgDJKZ7fko5nIOeEwq3QTxP_fFqdtSanWplCfS342suuT1V1D869JlH748d_Y8yEDyC5udAJ66c8-IseJyXzuwjdjHNF67qMgU96gemK8N1eeTNk3GxBJ9_vwP8eLLm1BOlmb8qYrQn8q-25uWLx98UrZTwd4snV2J9R6i0U_wUoFV29_DHb9dPGRvLz41h-pz4j2_UKqEql8AExjjJC5hnOMqiHNGySiGLMoKKooI0zmCdIML-0o0mir9EMItm7jMe279SnaRgxzGou6cnpsMLehnTMi7xBbuM8gjBokxjeLG9RDSNqyhLkqxGaVbUeVkkKYF1VkWERrS44JcIogQmECGI0hiGBcYZrrI0yRAhMEuCBLIGcxE6P1xgL_yl4mWRJzC_8D8yMP43UwhJ9h34zgChIF1e6EsfvKrbmCCBghtrjiiWW-F_bDV5lw3SZZAu-sPxdAn6RHnCZfCay8UfJjQ-YP2lV7wM4iX4R9fc9OdkjA6HncBX-wwECBnVMMCk1ZwZwCXoYcAW75gMUG5BxZgE7R7AX7rnoMZcMBpedFpc_vy1qw_SvwIAAP__FmG81w">