<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/130082>130082</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[SLPVectorizer] Occasional miscompile with a switch statement
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
usatiuk
</td>
</tr>
</table>
<pre>
Reduced reproducer:
```
; opt -S reduced.ll --passes=slp-vectorizer -slp-threshold=-99999
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 i32 @test(i32 %0) {
entry:
switch i32 0, label %bci_130 [
i32 -4, label %bci_96
i32 3, label %bci_130
i32 1, label %bci_130
i32 9, label %bci_108
i32 0, label %bci_130
]
bci_130: ; preds = %bci_96, %bci_108, %entry, %entry, %entry, %entry
%1 = phi i32 [ 0, %bci_108 ], [ %0, %bci_96 ], [ %0, %entry ], [ %0, %entry ], [ %0, %entry ], [ %0, %entry ]
%local_2_10 = phi i32 [ 0, %bci_108 ], [ 0, %bci_96 ], [ 0, %entry ], [ 0, %entry ], [ 0, %entry ], [ 0, %entry ]
ret i32 0
bci_108: ; preds = %entry
br label %bci_130
bci_96: ; preds = %entry
br label %bci_130
}
```
Expected output:
```
; 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 i32 @test(i32 %0) {
entry:
%1 = insertelement <2 x i32> <i32 0, i32 poison>, i32 %0, i32 1
switch i32 0, label %bci_130 [
i32 -4, label %bci_96
i32 3, label %bci_130
i32 1, label %bci_130
i32 9, label %bci_108
i32 0, label %bci_130
]
bci_130: ; preds = %bci_96, %bci_108, %entry, %entry, %entry, %entry
%2 = phi <2 x i32> [ zeroinitializer, %bci_108 ], [ %1, %bci_96 ], [ %1, %entry ], [ %1, %entry ], [ %1, %entry ], [ %1, %entry ]
ret i32 0
bci_108: ; preds = %entry
br label %bci_130
bci_96: ; preds = %entry
br label %bci_130
}
```
But sometimes the result is:
```
; 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 i32 @test(i32 %0) {
entry:
%1 = insertelement <2 x i32> <i32 0, i32 poison>, i32 %0, i32 1
switch i32 0, label %bci_130 [
i32 -4, label %bci_96
i32 3, label %bci_130
i32 1, label %bci_130
i32 9, label %bci_108
i32 0, label %bci_130
]
bci_130: ; preds = %bci_96, %bci_108, %entry, %entry, %entry, %entry
%2 = phi <2 x i32> [ zeroinitializer, %bci_108 ], [ %3, %bci_96 ], [ %1, %entry ], [ %1, %entry ], [ %1, %entry ], [ %1, %entry ]
ret i32 0
bci_108: ; preds = %entry
br label %bci_130
bci_96: ; preds = %entry
%3 = load <2 x i32>, ptr poison, align 8
br label %bci_130
}
```
I have bisected the issue to commit https://github.com/llvm/llvm-project/commit/894935cb5146fd2ac6334cc8b11e6d6e0e264fe6
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsmN9vozgQx_8a58WiMmMg5IEH0jTSSne601W618rAJPjWYGSb_ti__mQDSbfb9ra33Xu5Rim1Z_zjO-PhI4iwVh57xIKkW5LuVmJ0rTbFaIWT4-dVpZuH4g9sxhobanAw2jcN4SVh4Zux-ctKwrdUD45G19RMMy6UolE0CGvREr6zaohusXbayC9oaOT7rjVoW60awnfRxn8IK50wR3S0EU4o8aBHRwnfUQKAUUd4idEAa0Z4ySFcfDf-uutbWRIukTw1YsgJL2PIo0PO5lYfTNkyPUui62CW3hwNsDjy-Y_D5AMCcJbqjBwULjLv8-wmS6Kx_9zruz5Ssh_vo2M_TlMIKxs8yB6p5EBJwhxaRyAPPUgZgQ0l6y1hJfbOPEy5pvZOuroNUxiBS6pEhcqPr2p5E3NG_QGyklIaxkTJN4M22SM_f26NR_74H_ybb_0sf-R_VmPwk3Q3JWEx8jDp-z6-xgaDjZ1TvQQGl49lTL0pe9_TDrIgjcOiQyung0m3UxTnhYN2b0m380ldnjW84Aw7_DTfrFzpWqgbuInZW0J4Wf-LIt7D4TUbdHOZnEuB5T9WCuezrMxzpTfvs8netM2_2Ge9e0pGVl7dD1g7bKge3TC6GaBP6PmrbkaFn3bzTuszRgmsCSutHk2NNwepsBfdCTePh8EHPp_F5-n2lr1F41Bhh71PzCXQe78S4Ve-d2KXbwxaWt0TfrUYlntwIqQvgQ8s_3Qsw4lpT04r3dIvaLTspZNC-WeKV3Edv4br-BXsvp_vdfT9GNHeh1Pb0VGrO3SyQ0tdi9SgHZWj0n4w64NZH8z6b5nF_7fM8sEHq9Ki-TqLXuLgzFLqcEmFksee5m-F3SfailuklbTTs5nHnbR2ROo0rXXXSUdb54aAPtgT2B-la8fqotYdgb1St8u_aDD6L6wdgf00j8A-3yQbntZVGifZoQFRZ5wndZ1XcYxZkyFDyJIDZqum4M2Gb8QKi3idxJDxOIVVWzTrpIKUJXXCgTciyVncsDrBA-MbgMN6JQtgkDLOshhi4HAh4ubAcy4qTDnW1ZokDDsh1YXXeKHNcRXCK2LOWA6rkCcbXv0BerybgvfISncrU4TAqvFoScKUtM6el3HSqfCbwfUvv_95eqUn6Y7-VtfCSt0LRTtpa90NUiG9k66lYiGPdcIFlq1Go4o3ZziotAT2cxi3BfwdAAD__3tEapg">