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

    <tr>
        <th>Summary</th>
        <td>
            Loop Vectorizer crashes with assertion failure :: Assertion `!State.VF.isScalable() && "Can't scalarize a scalable vector" on hitting a store instruction.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    Loop vectorizer aborts with assertion failure on hitting store instruction in a loop
```virtual void llvm::VPReplicateRecipe::execute(llvm::VPTransformState &): Assertion `!State.VF.isScalable() && "Can't scalarize a scalable vector"' failed.```
I have reduced the IR to simple loop containing a store instruction.

The issue started to appear after the commit [D134460](https://reviews.llvm.org/D134460) where tail masking condition is added for legalizing scalarization.
@fhahn 

Find the IR and the command to reproduce the failure below.

**IR**
**test_loop.ll**

```
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-unknown-linux-gnu"

define dso_local fastcc void @_test_loop(i64 %n, i8* %store_dest) unnamed_addr #0 {
  br label %1

.critedge5:                                       ; preds = %1
 ret void

1:                                                ; preds = %1, %0
  %2 = phi i64 [ %5, %1 ], [ 0, %0 ]
  %3 = trunc i64 %2 to i8
  %4 = getelementptr i8, i8* %store_dest, i64 0
  store i8 %3, i8* %4, align 1
  %5 = add nsw i64 %2, 1
  %6 = icmp sle i64 %5, %n
  br i1 %6, label %1, label %.critedge5
}

attributes #0 = { "target-features"="+crc,+crypto,+fp-armv8,+neon,+sve,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8a" }
```

Can be reproduced by **command**

`opt -passes=loop-vectorize test_loop.ll`

**Dump of crash**
```
virtual void llvm::VPReplicateRecipe::execute(llvm::VPTransformState &): Assertion `!State.VF.isScalable() && "Can't scalarize a scalable vector"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments:opt -passes=loop-vectorize test-loop.ll
 #0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) 
 #1 llvm::sys::RunSignalHandlers() 
 #2 SignalHandler(int) Signals.cpp:0:0
 #3 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)
 #4 raise /build/glibc-S7Ft5T/glibc-2.23/signal/../sysdeps/unix/sysv/linux/raise.c:54:0
 #5 abort /build/glibc-S7Ft5T/glibc-2.23/stdlib/abort.c:91:0
 #6 __assert_fail_base /build/glibc-S7Ft5T/glibc-2.23/assert/assert.c:92:0
 #7 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc92)
 #8 llvm::VPReplicateRecipe::execute(llvm::VPTransformState&) 
 #9 llvm::VPBasicBlock::execute(llvm::VPTransformState*) 
#10 llvm::VPRegionBlock::execute(llvm::VPTransformState*) 
#11 llvm::VPlan::execute(llvm::VPTransformState*) 
#12 llvm::LoopVectorizationPlanner::executePlan(llvm::ElementCount, unsigned int, llvm::VPlan&, llvm::InnerLoopVectorizer&, llvm::DominatorTree*, bool) 
#13 llvm::LoopVectorizePass::processLoop(llvm::Loop*) 
#14 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*) 
#15 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) 
#16 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) 
#17 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) 
#18 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) 
#19 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) 
#20 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) 
#21 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) 
#22 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) 
#23 main 
#24 __libc_start_main /build/glibc-S7Ft5T/glibc-2.23/csu/../csu/libc-start.c:325:0
#25 _start 
Aborted
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWUtv4zgS_jXMhbAhUfLrkIPjxNhguzFBEvTVKIllmxuK1PDhdObXL0j6ISVOd3q6ZzE7gWNTZPGrqq-KT4G1YqMQL8noioyuL8C7rTaXT2Bc_ftFpfnL5SetW7rD2mkj_kBDodLGWfos3JaCtWic0IquQUhvkGpFt8I5oTbUOm2QCmWd8XUUEooClVq3JLsm2ZyMs_TZCeM8SLrTglMpdw0p5qSYf7m7x1aKGhzeYy1aTNX4FWvvkLBpV_TRgLJrbZoHBw4pYWPCZqSY0_nRxqCM5bF9-GU5FPahBgmVDFCEzVKfMSWMLUARNnHUBoHgNoVUriTuuSCMETaJfiMfHl1Jnt3SLeyQGuS-Rk7dFuntPXWaWtG0EiMHtNbKgVCBKnhL1nDPUfx-3CIV1nqk1oFxAVJTaFsEQ2Ht0EQVtW4a4SgZXV3nRVmOMzK6Jmy6da61gSa2JGxpcCfw2Q4Dd0NtNoQtD9JsRp-3aJA6EJI2YJ-CbbVWXKTwWQqcI6drbajEDUjxRwz0niXo2l1m6y1sFe26sRTqSAbsi8HoWNbUYGt0YCw2HDKqQqmfe2wQFj639-m3W-fQulUgdyhlr7Wfb-nRgdmgoxwcSHjR3lFSXIfo4yBkFQ7ElBTz8F-wgcjHpJjHr_A0LkkxH5cDkbMgkLPpQBUs1T2EOsZ6SpwRIe57BQCm3o7LgVdPSj-rgRTKfx1slD92S98c10Ih5VavpK5B0jVYV9dpnJAyWx39JWwqxiUlbKQIW1AxJWwenmJarThaF6LrlYIG-Qo4N5SwIqNkcpVUUVoZKqFCGbrlXSuGtREO-QZHYTh97I8UV7Q1yO3e5QMiNeii-V0F-cdxv6WALcJvdvCHsBGLje1W0EjO6CpUjvaCOY3DYxHrs0PvWHlCKCKCM17VdE8wC6kqph2hMgpt0KHEBpVrnYkReCcOi4h0tHM_8qdRXa9TGZ5Aio2ieUfdKKoDzqmyz0ergmxXahylRN201Eo8iB2cV52oizzKh5ZOAnSfOhmQwja57sYPnDOi8g7tPqlCRCaBbJbSf7BGcN6gDfldXMep86o2NWGLWHhpnU7ldTsA0-ym6UmhVqlkd5gKu-kwh2ORnYrFqVgei0AYoydr--M_fS9A0QpPcw-n1QtNc8d-ajo7kejW0UEb1j9LiuswBAfHNZL2pqG-ugR27ZuW6jWtDdhtD79v4j9gYYx-3H26mT_cUOursEABrfwmMK6NC4Opv0BthNv6aljrhrBldCT9DFqj_4O1I2wZl0JL2DKuIkLV0vO0aERCaQX1kzNQ4179g4P6iXLftEFLrMqGaR65M3pjoKFgNj6M3WDHd2M7OMQ2DaKY9CfK7YtNhTsjlIu6H4MxvbgYeF5p6wxCE9ldUKHiHH3CzM9h3nv1IDYK5L9AcYnGHkJ07MZoTyCsDAk5Vdth3QYasvh_7FXQ1cpgmqaMoxF1KUVF2PLrdLwal91FKjS0bmsQ-NDqYUbYVfY1z4tZ2EOcMEtqQNiQcsvKC8lDcKWo6sHDZOlGj8dHNmQFYUsb7SNsORyGpxfLsQ1B9kp8TRW7qFr58BihhzUp5qOy78oobVE_rNbx5GfsFRFneR9xTFertNVdhbReVfBxr1K_YyHhsz7-5AN814HpcWSa8XrGekxPf83kkOaGTi7NerhXYEV9JXX99COQ8xNkSOrslakbodXPYuY9TAnqJ7BYByscfb7sR37c3AZshaYHH_V1VdykXcBCexVXe6_iGYunEb54Y2sa_qfa26CiqzoM4lcy17oRCpw2jwaTDwtaaS37vhTv-IJ3YPfzSWt0jdZ-SnvIvvgbbsrv4xmvbptW9rCWXsUjzRsv4jJjbnZa-rPtQcetWus3DY9xW3GM5FmZVxS9ao0ptzT4u0dVv3xDySdRGTB7ifkrFRj2B8ivhLNvus-t9U0b_FpAvX1rQXBuXgfyA_ZnULA5E-jfWieaffbdYwPm6aYRzp2RvDN6LSQ--Kbp2tuN3-hD8ftY7OYK5IsV9mB4sTjTqbjpTSnBhnEHg2M4ae7NB2s_a47yPNIb6vq2v2ICLZod8mQj2j9nefj8TyiZdG0PNHyr_9_blekviO5fRsH_dZJ0l-LPmnuJj_ogHxibc2jD7vusNanDD9my7_LWEpb9UIwPqhcftP9XBelk_3sh-qWk5B9I4HNU_I1c6O58jI9BuRMtSqH6W6gHZ4Ta3OP6XFDfWUU_Q72NOPPvrLFp8_BaSmv5m3etd0shz4D8VPM77syNgZdQ2yUvciL9Rqg384lu3cqFHVhatqO-fwvFvyX1BY1YCzQHubSD--hvN3YFbUCoTkVJV6twaljFC-NVav3YiaW2_nAIS8XYGHHi6aVgo9PxJega0aRlr34ezlHIX11oXPDLgs-KGVzgZT6ejMdsVJSTi-1lXkFZMF6OZtO8WpclZDlwlk1GMGV5ydiFuGQZKzKWT7JZPionw3JcQDWd8HLKp7N1OSVlhg0IebzTvogXBJfjbFrkF_EWyx5ecJjLeJdQ-Y0lZSaFdaer8AsnnMT0wuO09053CvjuG48Uyr_wNqX7TuXci4ILb-Tln79DiSz9NwAA__8bB9_e">