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

    <tr>
        <th>Summary</th>
        <td>
            Assertion `VF.Width == Width && "VPlan cost model and legacy cost model disagreed"' failed.
        </td>
    </tr>

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

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

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

<pre>
    To reproduce run opt opt with -passes loop-vectorize with the following test:

```
; ModuleID = './reduced.ll'
source_filename = "./reduced.ll"
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32-ni:1-p2:32:8:8:32-ni:2"
target triple = "aarch64-none-linux-gnu"

define void @wombat(i64 %arg, ptr addrspace(1) %arg1) gc "statepoint-example" {
bb:
  br label %bb2

bb2:                                              ; preds = %bb6, %bb
  %phi = phi i64 [ %add, %bb6 ], [ 0, %bb ]
  br i1 false, label %bb4, label %bb3

bb3:                                              ; preds = %bb2
  br label %bb4

bb4: ; preds = %bb3, %bb2
  %phi5 = phi i64 [ 0, %bb3 ], [ 0, %bb2 ]
  %icmp = icmp ult i64 %phi, %arg
  br i1 %icmp, label %bb6, label %bb7

bb6:                                              ; preds = %bb4
  %getelementptr = getelementptr i32, ptr addrspace(1) null, i64 %phi
  %load = load i32, ptr addrspace(1) %arg1, align 4
  store i32 0, ptr addrspace(1) %getelementptr, align 4
  %add = add i64 %phi, 1
  br label %bb2

bb7:                                              ; preds = %bb4
  ret void
}
```
Reproducer: https://godbolt.org/z/sdzaoYWGn
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 "wombat"
 #0 0x0000000004ef2cc8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4ef2cc8)
 #1 0x0000000004ef043c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007070be442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007070be4969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x00007070be442476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x00007070be4287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x00007070be42871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #7 0x00007070be439e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #8 0x0000000003f7b7ff llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3f7b7ff)
 #9 0x0000000003f7e379 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*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3f7e379)
#10 0x0000000003f7ea9b llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3f7ea9b)
#11 0x0000000002e53abe 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+0x2e53abe)
#12 0x0000000004cf1498 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4cf1498)
#13 0x0000000000ddd82e 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+0xddd82e)
#14 0x0000000004ceff06 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4ceff06)
#15 0x0000000000ddde7e 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+0xddde7e)
#16 0x0000000004cee0d0 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4cee0d0)
#17 0x00000000008e2b82 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) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x8e2b82)
#18 0x00000000008d5aac optMain (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x8d5aac)
#19 0x00007070be429d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#20 0x00007070be429e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#21 0x00000000008ccf0e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x8ccf0e)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWVFv27jS_TXMCyFDImXJevCDE9f9im-LDZqgi_sUUOJI5i1F6pJUmvTXX1CSHdNxuvGuL7BoENsSOXPmzOGQlGlmrWgUwBLNr9F8fcV6t9Vmec_cM1NsrfvS2atS8-flvcYGOqN5XwE2vcK6c8Pru3BbHHXMWrBYat1Fj1A5bcQPGPvcFnCtpdTfhWqwA-sQXaF4jeLdexZP_-MtvcafNe8lfFpjRNcYkXyGyMaAj81nUiKSj6ZW96aCh1pIUKyFyZocW5PR2jHTgMOcOSbZs-7dzh6iFtEVRGKB6Mq_KIlEkiG6Gt78XZYiusrSSCTEGyRkESlKxrY7f7dRlERK-L6oI4PXBDYBDn3kmIwzopN74oyZapulkdIKIilU_xQ1qt_7jO8caqEAP2rBMUrj77otmUNkIbIUIzJnpkHkBnfOYMa5sR2rAJFFgkgxdQ-XTeUDWsccdFooF8ETazsJiBCM8usxVFnuhwrj0mDJSpAepSwDSv6WrvBZf36YOwPcTsnPyzLzxIerXUxE5t1WDBb-c0hxfj3kwfneOsNovh7u5tc43jcPrS_kRYJrJi34_oNE0qN7GiZGL5EYOa1hGobyJXbKm-4zIqEu81fCvCRPT2tCDkVBZC6qthtQhoteOjyVUbcVk5MvqEDFye1It-zoPg-Tyy6hY3rAvAEHElpQzpe6NwlbBCVvzgPV-2Xh5jDXF2CpGR_whoufweyn0w1mUjQK7_lZpw1431H6t7wDxidgxjofyPjPcGiSd03M_KK6G3DDwjPFyNcnV_Avu43C-OBb5zrr1xGyQWTTaF5q6WbaL1ObH4hsLP_B9L_--KhG5zvHqm-Y9233sk2E8PEMxcWt0Y1hLWam6b2Adpg8ZKM7h8im0m0nJJgInjqpDRjfJplqIr9PGSe0spEzvfqGyKYUanTEkfYQrOv8fe-63s0sju7e2t4QvRl3IEQ_jNQST-1Lr5Tf6ryTX2TrXlU-IiKLEADRG6UjoRwYCewRolqbCniklXxG9FrpF9OjLh-QFH6t1gq3w2bpIwWEdrsGOcXpokQGFrssPfpuT9qtV4jQGMdP8e4vhZpU1QJL-eh3XkRX9tmOF7dGKDfUwL0ZJ8uLkWHfH7R1BliLyLDeCOXGqbT4m0OPyHX8NNHyyu55J0e845RW-E40isn_Y4pLj7-YaIzNdlZ1vnbj4bUHIhNQHudxCWlK5iSeiEtRIrJ5WmQPWXq47fuOamb1LBvpeZeAHA0xi6yoK9y5rQHGH74JKc8LMPgHAdJj0mme4cYOeZ5LPs2zAHseYpNFXlPMSm3ceciDY4CcvUJOyrMxkzLAzENMWkCRnYc5uASYi8PaonVe5nV9MCd-07r7upt3t8xOM6QzugJrfW8wO8aG1QXnw0Qp4FwccQaaF3_O2fTqU9vJgO9mvyyOjw77jruKSWY-PGrZn-z3MT6pWr_quB-eqe8NU7bWpj1ps9atUMxpc28AXvVeS1192xj4Tw-qeh4BVqeC_CZKw8xpizW0THHg18LZVxFW1vZt5_O6YdX2NQOf3KryA-yxPzPFGj9kR1a_d0604gfzOF-gZebbh1Y4d8Ly1mj_9eiub9tDvpesEV8C-xrxS2Z8XCOsKN9VI--rj5Vi8tkKuxOH3pxw8vtSduE8WVEGeQZ7A4E5ZSUc8OTgmJDTMDBrP2sO8jTbVyUQ6vOX0vf__3xdJ9kCXUmw51Z1khaHzwqDlj_j-AvLNakRyEUP5Yo55wtyiTL8n8n8Cw_PKH4wOmlYzFDXcXZAczzputc7Sl71FWed0-Z0wqPDWelOLpevxSGZINv5cS1Cfl4t7tK7eadGf0GEt0rpn6PsqFsgbHZURhDz-B2T9ZScv4pKkwqBTHlQfwsg5YIcsDT9UDy3ogMpVPjt8s4ZoZovUJ8qvjeeNT-zajvg_NlD4vj0e2yltfx9OGbYCHkC5G91v5HOyhj27FsPB2jQRPaNUK_X5xd76_jYtj_QoDfjKfShjB7ruheSTw-jxalVX3fuwWk9rQRjFv8vFP-Z1VcwohZgdnal7zn782LVN9ZWUHyLsPj4nLEK6859ZkJdLOyAGoQtjr7uFrw482RhcDnEJPExJqQxfnjwbg_WMeMe2pek3h0F0jBKEgpWVXUMeMS_mF4D6D7q7tjQgRm-BwIff6QajzQQXeG7Tx_vPnz8OprfTIGxAdcbBX4C4IQWR-eSV3xJeUELdgXLJCdJkRQ0y6-2S1pCtsjKMq2LIs8YxHVGy5jk84QXZZ6wK7EkMUnjnMyTdJ7F6axMCpqkjFRQVUDSBUpjaJmQMz8tZto0V8LaHpZJHM8X9Go4-LW7n-_M0ltFZd9YlMZSWGdf_JxwEparnWAYZfHXzewPwd0WI7pGdI2nGz9tM4wI-XormcKVtg63fqfGTHEsoWHV82ErF5Y1BoAjQhDJcc2EBD676o1cHp3-Crfty1mlW18dfqKPH1Fn9L-h8mM9pGcR2UwZPi7JfwMAAP__tY6LBw">