<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/158259>158259</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
LoopVectorizer crashes in SCEVExpanderCleanup
</td>
</tr>
<tr>
<th>Labels</th>
<td>
vectorizers,
llvm:SCEV
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Theodor
</td>
</tr>
</table>
<pre>
Assert in vectorizer during SCEVExpanderCleanup: https://godbolt.org/z/Ezcf68T85
Assert message:
```
opt: .../llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp:2466: void llvm::SCEVExpanderCleaner::cleanup(): Assertion `all_of(I->users(), [&InsertedSet](Value *U) { return InsertedSet.contains(cast<Instruction>(U)); }) && "removed instruction should only be used by instructions inserted " "during expansion"' failed.
```
IR reproducer:
```
target triple = "x86_64-unknown-linux-gnu"
define void @widget(i32 %arg, i64 %arg1) #0 {
bb:
br label %bb2
bb2: ; preds = %bb4, %bb
br label %bb5
bb3: ; preds = %bb5
%load = load ptr addrspace(1), ptr null, align 8%getelementptr = getelementptr i32, ptr addrspace(1) null, i64 %arg1
br i1 false, label %bb7, label %bb4
bb4: ; preds = %bb3
br label %bb2
bb5: ; preds = %bb5, %bb2
br i1 false, label %bb3, label %bb5
bb6: ; preds = %bb7
ret void
bb7: ; preds = %bb7, %bb3
%phi = phi i32 [ %add, %bb7 ], [ %arg, %bb3 ]
%phi8 = phi i32 [ %or, %bb7 ], [ 0, %bb3 ]
%load9 = load i32, ptr addrspace(1) %getelementptr, align 4
%or = or i32 %phi8, 0
store i32 %or, ptr addrspace(1) %load, align 4
%add = add i32 %phi, 1
%icmp = icmp eq i32 %phi, 0
br i1 %icmp, label %bb6, label %bb7, !prof !0
}
attributes #0 = { "target-features"="+avx2" }
!0 = !{!"branch_weights", i32 89478484, i32 1879048192}
```
Run as: `opt -passes=loop-vectorize`
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUVkuP4jgX_TVmY4Gc6zwXLKiikEr6Vv3atpz4Av7GxBnboav714-uEwqaoWY0pUJ-HZ_7OrGtQjCHHnHNiidWbBdqjEfn11-O6LTzi9bpn-tNCOgjNz0_YxedN7_Qcz160x_45-eXby9vg-o1-meLqh8HJjf8GOMQmNww2DHYHZxunY0r5w8Mdr8Y7F5-dfuy_lIXTGyY2MwWThiCOiDtExtWivlfbNwQiXW1WjHYWXs-UWNaBrsvXvVh7_wpMNh9jcZS-7lTVvmXs7NjNK6_-LfqBnIO8rIktrMzmicyuWFy87dI0E8L3RwW1Awa2jh5a1zPWSmUtd_dnkH9umTyZQzow4yEZ05JhfK1JzzqzxhZsWVQf1N2RM5g85VBw1n1xD3G0ff8BrnqXB-V6YmtUyEy-fzah-jHjiwz-cKg_prMNEw-cVZtExeUDErOADye3Bk1N9dNPBzdaDV3vf3JW-RjQM3bn7eQQIPkAnHQb64zUmYCWQZgUPG9Mhb16q5OTGxeP3GPg3d67KYE_o6Iyh8w8ujNYJEzuSUbb3X5vcyXY_9H7370S2v68W156EeylUg17k2PU8VYLn4YfcDIoDaSfCwU6eqZmzKfR9mUCykouUxs2nbyhPPWc6tatARsW0hrQEX9T3-U8cGjDnMERdvmqd7Ue2CnSHYk2XmwtUg7GBTWKZ2mU2eIniutfRhUhwzqbBYVzfejtdRX1hx6XjMoDhjR4gn7SOtE8vuMkXDZfE_6znabwDkIk_G9sgFp-Sag6m6cpwDzDwKUH6a--DAll2zCv3gi78ZTqssPeKvE5jEmLSVo9SH04oK81Gc4mrRObZJe8ZTypfU7tuLpE39-X5ukOfGktStX_YjM-cdc4jENKaW5auafqnwvkqt-8gubm5TjPJ-_LPKScCIhQnQeL0uTox9ZIm8eGFB6Eji1VxMEzC4Q052GhEkd_PMOJ270MKPvFFA-0iqDbPBuT206qCrKoIrRm3aMGObDgmpfURlgOqeWe1Rx9BjoJJLbdPY9qfMbpMMxcRDhLJqMDhvIGEDrVd8dv_9AczjGtJm-Lgm8bvKqzuv8Ms7qqhF5nTUws90clZ_GnquQ1FkKN0S-HFQIGJjcWueG5ftlPMEXei11Ixu1wHVWFVVZZaKQi-O60bVSSuhS77sMsROotCxqpWRe1G0JC7MGAYVoMhBNUUm5qkQJAjNR7oXqcqFZLvCkjF3RbUm3-MKEMOI6K2oomkXKdUgvCIDrE2GOmwHMlyzdsDRXbBd-TXPLdjwElgtrQgxX8miixfX_nBu-Xd8bnVfhiHQ_PXpzLEZv13ePDhOPY7vq3OnmzUBGB-_-j11ksEtR0INhDuS8hr8CAAD__-4wnMQ">