<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/128041>128041</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Assertion `IRDef2VPValue.contains(BI->getCondition()) && "Missing condition bit in IRDef2VPValue!"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
TatyanaDoubts
</td>
</tr>
</table>
<pre>
To reproduce run opt with the test below, -passes=loop-vectorize
```
; ModuleID = './reduced.ll'
source_filename = "./reduced.ll"
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-ni:1-p2:32:8:8:32-ni:2"
target triple = "x86_64-unknown-linux-gnu"
define ptr addrspace(1) @wombat() gc "statepoint-example" {
bb:
br label %bb1
bb1: ; preds = %bb2, %bb
%phi = phi i32 [ 5, %bb ], [ %add, %bb2 ]
br i1 false, label %bb4, label %bb2
bb2: ; preds = %bb1
%add = add i32 %phi, 1
%icmp = icmp eq i32 %phi, 0
br i1 %icmp, label %bb3, label %bb1
bb3: ; preds = %bb2
ret ptr addrspace(1) null
bb4: ; preds = %bb1
ret ptr addrspace(1) null
}
```
Reproducer: https://godbolt.org/z/5Tq9a8Ws6
Stack dump:
```
opt: /root/llvm-project/llvm/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp:444: void {anonymous}::PlainCFGBuilder::buildPlainCFG(llvm::DenseMap<llvm::VPBlockBase*, llvm::BasicBlock*>&): Assertion `IRDef2VPValue.contains(BI->getCondition()) && "Missing condition bit in IRDef2VPValue!"' 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/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 0x00000000054fd1d8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x54fd1d8)
#1 0x00000000054fab94 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x0000734402c42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x0000734402c969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x0000734402c42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x0000734402c287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x0000734402c2871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#7 0x0000734402c39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#8 0x00000000045d0cdf (anonymous namespace)::PlainCFGBuilder::buildPlainCFG(llvm::DenseMap<llvm::VPBlockBase*, llvm::BasicBlock*, llvm::DenseMapInfo<llvm::VPBlockBase*, void>, llvm::detail::DenseMapPair<llvm::VPBlockBase*, llvm::BasicBlock*>>&) VPlanHCFGBuilder.cpp:0:0
#9 0x00000000045d20db llvm::VPlanHCFGBuilder::buildPlainCFG() (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x45d20db)
#10 0x00000000045d2162 llvm::VPlanHCFGBuilder::buildHierarchicalCFG() (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x45d2162)
#11 0x0000000004488cd1 llvm::LoopVectorizationPlanner::tryToBuildVPlanWithVPRecipes(llvm::VFRange&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4488cd1)
#12 0x000000000448bdfa llvm::LoopVectorizationPlanner::buildVPlansWithVPRecipes(llvm::ElementCount, llvm::ElementCount) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x448bdfa)
#13 0x000000000448c347 llvm::LoopVectorizationPlanner::plan(llvm::ElementCount, unsigned int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x448c347)
#14 0x000000000448dd7f llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x448dd7f)
#15 0x0000000004490449 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4490449)
#16 0x0000000004490ac3 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4490ac3)
#17 0x00000000031d9e8e 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+0x31d9e8e)
#18 0x00000000052f8730 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x52f8730)
#19 0x0000000000e91ece 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+0xe91ece)
#20 0x00000000052f704b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x52f704b)
#21 0x0000000000e9121e 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+0xe9121e)
#22 0x00000000052f6a50 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x52f6a50)
#23 0x00000000009594da 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+0x9594da)
#24 0x000000000094ba0c optMain (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x94ba0c)
#25 0x0000734402c29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#26 0x0000734402c29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#27 0x00000000009432e5 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x9432e5)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWV9v4yj3_jT0BiXC-P9FLpy02a1-W_2qtupeVtiQhLcEvICn7X76V2A7jj3NTjub0TuaqmlsDjw8z-FwoECM4VvJ2ALESxBfXpDG7pRePBD7RiS5VE1pzUWp6NviQUHNaq1oUzGoGwlVbeELtztodwxaZiwsmVAvAK_grCbGMAPCS6FUPfvCKqs0_5sBVIAEdb-oAOES3ijaCHZ9CUF4CQFO5wCvNXOd0LkQAKcAFUY1umJPGy6YJHvWVcXTqhigwhK9ZRZSYokgb6qxfWU224OwYLMapwiERYj9H_cajF_dUxL5PzN-eAhwBsIiwNlsk6HuSfqipG-eRLN7X8xd8azGvSHrPiFubXhE1Wpei4Om1yx5SqJZI5-lepEzwWXzOtvKpm0CUEHZhksGa6shoVSbmlQM4CwAOIcgQi9qXxILcObet5WDNJZYVisu7Yy9kn0tGMAYgnQJUFGWIHSoEJYaClIyAQGOyzJoO3MPYQHdONWaUdOxjMsSu2H2T741wHG9497svnmIIYiXMD7UgiC-9C_x0hUQSg8m7G0dBx7ADRGGOesRn2jyjnt--AS_oKdFKPWl7tvT8kwd3KEKr_a1r-Mf2F-TeuiIW1d7wiacvB-8F570noPUzL4_jrIRoodwAQg_9XPKG9_sLr2czM-7fr5rR2JnbW1cuOA1wOutoqUSdq70FuD13wCv44e_cpL9aZKW-r0l1TOkzb5uQ-wYWNXWewavtVIW4LUQX_azWqv_sKp_dV-8BHj9oIk0G6X3BuD14yGV4PXjrSDy99X6t2XDBWV6XtWuryjyPvuiOHVRTqSSb3vVGKcvLEBY3ArC5dCsLSzdS28BOPMUvOWSScNuSA3C1VD4eLsUqnpeEheqhR__g21JDK-82ZnCK4ATgHPHqTCGacuVhCBB13eXbIMfbx-JaNi8UtISLg3A2fJ6BsKrLbMrJSl31dv57Ke4w0rctL7hxnC5hVVfCZbcQi7hCBfgwKUOnMIN4YLROUDF7R9Xxf0VNE255xYSWDZbl9qVttCq6TBzu2vKeaX2R8MyHixuTMPc2EAiKeSyEg1lflGoNDE7WJLq2WpSsfk7UYHmAOW3Wm012UOit82eSWu64HBhgteV2tdcMD1jr7VQmmlXJojczkjvTjOzupHPAK9LLtuGcKYcBKlr997YurFzA2f3J9cmCMJVu9C4IUNF4JjdNVI6J7s2zumbRlbdgExWtnAl1YxLy7Rg5AubbZSuGJ0pKd5AuJRqqDox-QDJXUpWEu79auh6GrHxyR-_R-isLDyFXqJD71cTn68ADhFEr6j_iaMNDWh2FPjmzXQzTHNp_VA_6DbRDJU0eXlSxmpG9j6YV5BL24Z29i_HHOAleu1oOZ-2pIMJaVLmEbznW0nE70RS4cAzz2EFDd9yuVFPtpvULon4x7xrYbokg_yn7QB3HaRhFCFcRTjGqFPTZrBuUT9azJ2hmhs1Tzxn32RgHI4B8yTfVLC2O80IfXrmQnwO3bcf0KMp3ShN4NZ4eZ-lHaXJAByPgXGWbkJISpdXPgXrGw6wyVewQflpwKAcANMxYJizPPkcoG8yAGbHERbFFFV04wAPSw9029Zuzc3_F4vQyNRjXcuN-gaej3-XGo7bU2YJF2OsW8L19y-Q_RoJTyzpx7MtnzgbI1rC437HCO879oz5pqPQRoNLN2hKMEjwxwj-zpkmutrxiogfwjNI8MBzlBejKMsqGhzx_EOput9tEQfseMuer9VvD8or8Hr-5Hb3eHvHKl67rcBR4D6u74jcsm58z6WlZTtowRMtJd2QD2spDzLMaR1XgrmtyUo17UpxynJOjU7FoDGcaKzCKP2wxloQ-Y96GukPAuiZV-OO56AimqigNN2cUMFuiek2FLVWFTPGWUcq2oLivIQdpYFwPCacu8-3CetGXu9rMSK7PmwezzsXPKWBcDIlTKrwQ4RPkz0O90IS8Wa4uSGSbNk46R8aHRL6GUWSKhxEpsciw4DmLGMnliin8UZRJt6nOhL3tXO-S7v7_fmd2rltcOpoHxPjTZaG6Iikd-Q_EfyFfdV5Y_DVaBuCWB6w6hwB-MN8_AuPTev8w9BgNAnjFEXHO8T2xPlB9XycywtKaqv0-2rbBp_S2jX5AVHoxAxSg2kU4uBzUdhrW33QQd_hgVNB9PO4tfXb4FU8CaCExB_Jg-_58ldxUeeFwUej3SjK4zyixztu3fiwueU1E1yOT4DureZye8c274XdV2If_DXJDal2Hqd4z_oHLzXRb-4f2nbXNa2llPh_fwa45uIdkH9lPiGn0Jq8udLj0fE-Ec2Wy69z8lDfWNqWHY4bw1V7nH3sRofV_w_ZnTB_nelVbZ-sUl0OaFX8H5f0n2o9Ms03nOm-Xuksn_4-W-i1sTVEXjSOvKgkqIKqtjeEy7P16VGHPqdHWznNP3nE55sMgNNDrZxFCD49uTZPxhJtn_aDnA93waKjLtKJn0LMYtiCn89NDrTtsj_Et0zvuSSW0fZ2uD1YBGEB769_u7_67RGgYtV1CTWzjZbMhTsMwnxyTXRBFyHNw5xcsEWQRgilUZrGF7tFEocxQSzfsJTiqsKY5uUmy8IwiXESMXTBFxjhGGGMggzFCM9DFIYpQmkSxUGVIwIixPaEi7mbBHOltxf-GmMR4AxFwYW_zDP-UhxjyV6gtwKMQXx5oRf-BqRstgZESHBjzQBjuRVs8RNc9Fw0Wiy-_zKnc8SXBf5vAAAA___kIccf">