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

    <tr>
        <th>Summary</th>
        <td>
            Assertion `LoopCost && "Non-zero loop cost expected"' failed
        </td>
    </tr>

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

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

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

<pre>
    The following inputs asserts under `opt -passes=loop(indvars),loop-vectorize`:
```
target triple = "x86_64-unknown-linux-gnu"

define void @test(i64* %ptr.base) {
entry:
  br label %loop1

loop1:
  br i1 true, label %loop1.latch, label %loop2.preheader

loop2.preheader:
  br label %loop2

loop2:
  %iv = phi i64 [ 0, %loop2.preheader ], [ %iv.next, %loop2 ]
  %ptr = phi i64* [ %ptr.base, %loop2.preheader ], [ %ptr.next, %loop2 ]
  %iv.next = add nuw nsw i64 %iv, 1
  %ptr.next = getelementptr inbounds i64, i64* %ptr, i64 1
  %cmp = icmp eq i64 %iv, 1024
  br i1 %cmp, label %loop2.exit, label %loop2

loop2.exit:
  %ptr.next.lcssa = phi i64* [ %ptr.next, %loop2 ]
  br label %loop1.latch

loop1.latch:
  br label %loop1
}
```

```
opt: /home/npopov/repos/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:5923: unsigned int llvm::LoopVectorizationCostModel::selectInterleaveCount(llvm::ElementCount, unsigned int): Assertion `LoopCost && "Non-zero loop cost expected"' failed.
[...]
 #8 0x000000000341d17c llvm::LoopVectorizationCostModel::selectInterleaveCount(llvm::ElementCount, unsigned int) (build/bin/opt+0x341d17c)
 #9 0x0000000003424d84 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (build/bin/opt+0x3424d84)
#10 0x000000000342738e llvm::LoopVectorizePass::runImpl(llvm::Function&, llvm::ScalarEvolution&, llvm::LoopInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::BlockFrequencyInfo&, llvm::TargetLibraryInfo*, llvm::DemandedBits&, llvm::AAResults&, llvm::AssumptionCache&, std::function<llvm::LoopAccessInfo const& (llvm::Loop&)>&, llvm::OptimizationRemarkEmitter&, llvm::ProfileSummaryInfo*) (build/bin/opt+0x342738e)
#11 0x0000000003427bbc llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build/bin/opt+0x3427bbc)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9Vslu4zgQ_Rr5QliQKHk7-OAlBgJ0zzS6g7kOKKlkc0KRapJynP76KVKKbVlO0ofBBIJtsZb3WPVYTKaK1-XTAUiphFAvXO4Jl3VjDWHGgMbvRhagSTCNVG3JuHbLJki2Qqk6oHMuiyPTJqCLgG7c2vgIuVWa_wIMCZJVEG2DaOV-t49_tUzvwRKreS2AYDYSUHqaT_-epuNGPkv1IseCy-Y03ssGTV0S_1lAySWQo-IFCdLIgrGOxzQN6ArTTGqrw4wZQEokmK3bIJBWv57ZEJJpIlgGwgU41vE1QrvQc-Yxkm0w5-YmLhTM5ofBOg1rDQdgWLrbzNem9wnRQdiVM_rwoy9bfeAEt06CyZpEjsUQH21bb0EXHxhKONlrX-9xSY0FvM7ty9rGXkr7G0DO-ROkjotHY0VBZPNCpHlpd-TMLjbuU7tEoIJAQIWtdYy5zBRK1bSUN6QniG6hlyuvap-Gux_w8wY0omm__W3EnUbDidvh8rDr3q_Xw7fdhCI3hn1Q84_KOFByp8hbPXfLnx-B2fbukb27iCMBM2KG3UFVKIudrFWtsII7DbXCqbAT4liNa63-wanQvbovnuHnk2bSlEpXzvGv89iguy9I5_we5nWNIJMFTRxWIw3fSyiw4Zb4dLilZHUdwixXcqOM_aoKEK3doFRy-ygtaAHsCBsUi5sblwwPrZY6w6YH5MYbYq_8SMTkbhw6RAeCu5_i4ybYH0qOf4FWxNWT5M4IpxpxoXBDjM5IybiAIuyKOVmHYXjpZUCTOYlO0dtfksZFPMv_z10ih3nWcIF8dxmX-OlaTNfRqSPjKnFmu-izpWkxT99hC9_w4miXUQ05GPOlvUD67ij8T1h4kDMLJBFHNyxmyRw-Z6Eb-VjVosdg18jcVdV3dHOV40fOBNMPRyWau3aH8ShLNTA8-YvuLPS7PltVccmQ35MGGFjXQuXPeJx-NiDz1w9AvvBMM915rG4goGJ4jRdrbs0gfLX6DqYR9yzGNFXtdcbywxs3Y4vWXL6VK9n0S7HKXYMdEzwE0t3P7ngMWj31x-phAPsnQladwL8jc_38UHGLmh54ftOqxAP1o6mq661_LCCnj56A4lsBZdl7h64voN8Tz0oy8Wq4-cok27tLf3MnqCvDJ8yR2IX52ygeFcukWCQLNrLcClj-V1Nq1GixPFhb-w3THT57bg9NFuaquprl_QnPUTPgBvokTeNkdFhO8ukcFpCkswkt42IKMYvmCUvpAudJTOnI30JmidMQ4Y_X083RmWxHfEkjSqMknkWLySxZhOUkL8sspyyiWZkvpvhvIMqEi9BxCZXej_TS08qavUGj4MaaixFb6GYeeEjMzxp7UHop-TPPR57_0pP_F1tNV60">