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

    <tr>
        <th>Summary</th>
        <td>
            [LoopVectorize] Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' 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:
```
; bin/opt -passes=loop-vectorize 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 void @main(ptr %p, i1 %cmp.i.i.i.i, i64 %0) {
entry:
  br label %for.cond28.preheader.i.i.i

for.cond28.preheader.i.i.i: ; preds = %safe_mod_func_int64_t_s_s.exit.i.i.i, %entry
 %storemerge102.i.i.i = phi i64 [ 0, %entry ], [ %dec.i.i.i, %safe_mod_func_int64_t_s_s.exit.i.i.i ]
  br i1 %cmp.i.i.i.i, label %safe_mod_func_int64_t_s_s.exit.i.i.i, label %cond.false.i.i.i.i

cond.false.i.i.i.i:                               ; preds = %for.cond28.preheader.i.i.i
  %rem.i.i.i.i = srem i64 0, %0
  br label %safe_mod_func_int64_t_s_s.exit.i.i.i

safe_mod_func_int64_t_s_s.exit.i.i.i: ; preds = %cond.false.i.i.i.i, %for.cond28.preheader.i.i.i
 %cond.i.i.i.i = phi i64 [ %rem.i.i.i.i, %cond.false.i.i.i.i ], [ 0, %for.cond28.preheader.i.i.i ]
  %cond.i.i.tr.i.i = trunc i64 %cond.i.i.i.i to i32
  %conv82.i.i.i = shl i32 %cond.i.i.tr.i.i, 0
  store i32 %conv82.i.i.i, ptr %p, align 4
  %dec.i.i.i = add i64 %storemerge102.i.i.i, 1
  %cmp19.not.i.i.i = icmp eq i64 %storemerge102.i.i.i, 1
  br i1 %cmp19.not.i.i.i, label %func_131.exit, label %for.cond28.preheader.i.i.i

func_131.exit: ; preds = %safe_mod_func_int64_t_s_s.exit.i.i.i
  ret void
}
```
```
opt: /home/dtcxzyw/WorkSpace/Projects/compilers/llvm-project/llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From*) [with To = VectorType; From = Type]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' 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 0x0000787321a2ebb2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.22.0git+0x22ebb2)
 #1 0x0000787321a2b17f llvm::sys::RunSignalHandlers() (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.22.0git+0x22b17f)
 #2 0x0000787321a2b2cc SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x0000787321445330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x000078732149eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x000078732149eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x000078732149eb2c pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x000078732144527e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007873214288ff abort ./stdlib/abort.c:81:7
 #9 0x000078732142881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000078732143b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x00007873186e3e2f simplifyExtractElementInst(llvm::Value*, llvm::Value*, llvm::SimplifyQuery const&, unsigned int) (.constprop.0) InstructionSimplify.cpp:0:0
#12 0x000078731ab13f08 tryToFoldLiveIns(llvm::VPRecipeBase const&, unsigned int, llvm::ArrayRef<llvm::VPValue*>, llvm::DataLayout const&, llvm::VPTypeAnalysis&) VPlanTransforms.cpp:0:0
#13 0x000078731ab1f860 simplifyRecipe(llvm::VPRecipeBase&, llvm::VPTypeAnalysis&) VPlanTransforms.cpp:0:0
#14 0x000078731ab22200 llvm::VPlanTransforms::simplifyRecipes(llvm::VPlan&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.22.0git+0x322200)
#15 0x000078731a8f77b6 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.22.0git+0xf77b6)
#16 0x000078731a90864e llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.22.0git+0x10864e)
#17 0x000078731a90ade1 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.22.0git+0x10ade1)
#18 0x000078731a90b4a6 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.22.0git+0x10b4a6)
#19 0x000078731b4f0715 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.22.0git+0xf0715)
#20 0x0000787318122289 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.22.0git+0x322289)
#21 0x00007873204dd6b5 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.22.0git+0xdd6b5)
#22 0x00007873181227a2 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.22.0git+0x3227a2)
#23 0x0000787321d0e585 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/libLLVMOptDriver.so.22.0git+0x20585)
#24 0x0000787318123acd 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.22.0git+0x323acd)
#25 0x0000787321d1b86e 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) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.22.0git+0x2d86e)
#26 0x0000787321d26a6a optMain (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.22.0git+0x38a6a)
#27 0x000078732142a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#28 0x000078732142a28b call_init ./csu/../csu/libc-start.c:128:20
#29 0x000078732142a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#30 0x00005f2bde346095 _start (bin/opt+0x1095)
Aborted (core dumped)
```
cc @fhahn 
llvm version: 97d5d483ecc67d0b786a53d065b7202908cb4047
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWltz46i2_jXkhbILgW5-yIPitM_pOklNTieVc95cSCCb3Qi0AaXj-fW7QLItOU46kz2zJzU13em0jFiL9X3rws3UWrFRnF-C5Aok1xe0c1ttLpmrnn_d_bgoNdtdfuOt0ayruAGkAKgAKRp-UAHIFSyFAnilWwdnLbWWW0Cupdbt7IlXThvxK4eGe3k2lxLO7gEqHDUb7iCjjkq6052DgFxDgDGfNYAUfNbiDAFSEBx--Y_R9KN_SuPwayYODxHOASkinM_qHA1PKjSle_E0nt37bhgf7XBGtJLvbXjO03Uazzr1XekfaiaF6p5nG9X1IgAVjNdCcfikBYMgRg31BOStMxDgpAV4CUXkH6umnYv-b2hMY9-KAF5AkF0BVHDlzK4nFcLSQElLLn2fWpt5pRXD-bw1fMsp42ZQFCx44z0poHdKazizA6LE0pqvG83WdaeqtVAujddubdd2zp-FO1oIcNKbhIog5rThDTcbHiHc9woa263owSRXEI3lIEiuw-fkyrcxXk10v8eMoGKg4yyLB47eC-og4Amb11RaftAXyDzTTgr49p8XFL_pMeh7GN7s9Qcha3gTaNxTiF6EwbsgBgzv6nkuNM6A7615G9BeUrwSFlO8g8qXY40DBv104ENsjEd35mCAM52q9mk2Mc9pKAgeyT7l44C2W-nfn9Hrber9EpJh1OugwXcZ5z6VYqNgvB_skARhJMrY3sAz2eXFo4OVTRst5kq7kbiomhbyf75LxTiBxoomORHCJSJRCJPpm5-VoInkh6uOt9RwF4qpV5xdn84wo2fd9iPh1VY3HODVME8BvPo_bb7ft7TyrXdG_4NXzgK8qnTTCsmNf5byqZm1_bvhI8AroSrZMX5suO_aVhvfY0mtE2oz3wJSJJmfRiDjlXS7lgOc085pX8qDGCkAKSpqHcD5yugG4CKU-eTqh3Bb-KADKY9hQnzw8uQK-n6hOTQk115_YS03TmgFQYqEpYAsHzQgXwDOH6kMKnEKcOrnqTAcWT7s-vf-JTWbruHKQV1DoTx46kQpOextjvwUhjNYUyE5mwNU3N18Ke6_QNuVjXCQwrLbQMM9fp8zW-da67HhFcCrjXDbrpxXHt2erBNOhbUd91xDqhgcqIVuy2FlqN3CklbfnaEV92PfO1p9h6xr2n4KRPO-tt4ZvTG0OYDxFnxkkREN-r51Sgm1gV7O8-bD0VMMcD7VAMhS6ZlQjhvJ6ROf1dpUnM20kjtArpQ-dj15FTywABhDrWCjWedXExgfLerXDvgVi35XM4INe4xee78-wX3ZJgiiZ4QQyvKM4IhiXpZ4FMN2Z_uHOyOUCy56MCGt8mMnQ3-stXWG0yaE4xIK5frgzD-YnDc3j7f7eCo7IRnAq97n87lvF2X_2_cbMnRu9RzjOdr4ynWFnnHA4v3QI41OkJZRVp9D-q1T92KjqPxvqlhvTv4JwHhzj2DwKRhcVXBiNsB58MISWrERqtZrF6rQsq-tfUHqJey8an3SofCvH4BMBojjhBA0UNDbOyyLR8th_6LyhqfB5CBytDieKlzwEldwvW7d1nDK1t-FlGvRtJL7HKchWD05qnUS4NW427wCpIj9Gj9LB-XJe5T7DFJUvqk2lPVoT0J6Tu1Y5k1d-WKsKzslFGccGiosD0ps8MQ-JOzOMt762Gm1Fc8Ar0LPoBZnftsyaM2nWnGe1zWkpS_YQY9jvbdCU2-V3zllg_jihXhUwrWSa6kpWzPta0VQJFTA6Jsbu6loryuKMm-Md7FPsGktiUmZRNlvi5kg0seMVzhO2ShPOeG4htZHiah3X5791OG-9BHzVYXJ9pjPj1R2fIj4n7XeDyr_t-NmBysddIVC1qmwIWajijYP71uj23nYu_mRTRfK617PST55KOOEjWgZkRrl0Jndg15pyW7EE_-q7BTA3TdeiZZfUcvfsGmMozCG7r7xGpDlWM8BtJ8Pxv2vqaM3_YZ7PMBY1i9GCkXlzgobXi_g452k6sFQZWttmtPi4cGSE7B1nqKD33pUr0L9vWyIpzZgjBGaaJ0oGOaAiYmn7pBUDaP_wVPBy1nhcT_Dn84LJOA6ZkwyQZ3XWVamI9Q3Wrd7XaHGelCqP8khBX_mVed4D3QEfUixpe76gHs9AI8kjVu_-iHGQ_vZ6aTPtW6Eon45bPg-QUut5eeiO_B5ZDudsL1AeRrzV9jmd9QOUdYaXXFr_dsJzX1D8bkQRwHUEXJ2ApkyHv0csunU16aVE7irw7r7k-VUFEAdIecnkMuYvpZTU8ivw50U7aGy3VJFNz4Vl2eEfOX-dDR5Io40jdcSURnXKIuSEUzGHRVy2ExQa2814_I82Ak9L-n9EHv-56_klruw631RnzzpB5dgNFk_RRjjfHxAEdzwFry_mb55vF1qc3bazRdHoid7SxQzlpa_R-z_YQ7627E3j7f_n6dLzfh_cXXq3uC_o3fxaRpldHxGchsOeB70HpL3WsFo67Q5T1gv8JvoGkQ-XRZkFB95mp4ZMMST_LdlwZ6Y5TvZ_QB9rwXx5_fJ4IhfWndtxBM3L46IUJKPgjY-CVpCK_aO0nLOBX91Zt8b7Z7CI8HTMycWlXk6XvybLoTqnWi5FGq63713RqiN36ifCfUXTD2EW-lbWm2DnuLc2xtRGmp2X1Wt-4X2aS-t5S-dazu3EvKMkn_r9Stwzp5GBE5ktxHq5Tx07G8d69sOh_Nk2d-vj2n0uq68U4f95OLc7KZbt3Z-Ixk-9Sj-Ryj2Vq9HbkQtuNn36zeiH_3_z68MLE-PWzg8PdVkOKUphbp1t1SoP9tUktOUHk09OTTFNKooXK-lKKu1ddS4dUWlXB-OKSvbvTxCHc5nzwmFu7wsBqQgw4inB6oU5yUM_YUS7nSQ_tFrngXN_alo-NYJHg6i8OkZa9A4wXDO_LOaSZwBUiS94sPVTVLjknESp2iRwF6ld-PhimzYrS2GyaEotXE8pFKlDQ83bnxf10a3q1UFQYzqLd0qCFDh_QqfuLEhGwu4yFjC4pzwqkozhsosT2lCGEqTMsMIL1BelTGKswt2SdiCLOgFv4yyJIlzEuX5xfZyEZGUl4sIl3VEMxyVKUUsreuszNIc5_mFuMQIJyiPcoQjgvI55jhNaIJjnNYEIw5ixBsq5NzbNtdmcxEuHC-jJEZxchHurm34KhPGhzsyH6sY4CXAOFxCzrSaPVEp2KF5wxU31FNU7mDd_RqOqzBIri_M5RDdGwtiJIV19ji2E06GL05Ndqwguf7P3uJedEZefvymduDu6RL_KwAA__8eWpS9">