<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/85510>85510</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[SimplifyCFG] transform `undef` to `unreachable`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:optimizations,
missed-optimization
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DianQK
</td>
</tr>
</table>
<pre>
I tried the following code:
```llvm
define noundef i32 @src(i32 noundef %arg) {
bb:
switch i32 %arg, label %bb5 [
i32 1, label %bb1
i32 2, label %bb2
i32 3, label %bb3
i32 4, label %bb4
]
bb1: ; preds = %bb
br label %bb5
bb2: ; preds = %bb
br label %bb5
bb3: ; preds = %bb
br label %bb5
bb4: ; preds = %bb
br label %bb5
bb5: ; preds = %bb4, %bb3, %bb2, %bb1, %bb
%i = phi i32 [ undef, %bb ], [ 4, %bb4 ], [ 3, %bb3 ], [ 2, %bb2 ], [ 1, %bb1 ]
ret i32 %i
}
define noundef i32 @tgt(i32 noundef %arg) {
bb:
ret i32 %arg
}
```
`src` can be transformed into a return statement because `bb` through `bb5` is undefined behavior.
Perhaps we will be blocked by #78578 if we fix this issue.
alive2: https://alive2.llvm.org/ce/z/Sz6r-e
godbolt: https://llvm.godbolt.org/z/sjrT7Ms6e
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVN2O6yYQfhp8M9oIg7GTC1-cnMhVVVVqdfoCYMY2p9hEgHe7-_QVtvPbVmq7UZTAfPPNxwwzyBBMPyHWRByJOGVyjoPz9cnI6defMuX0e_0jRG9QQxwQOmetezNTD63TSPgXQk-EXn5Lun6tfR1Xk8bOTAiTmyeNHRjOgBQ0-JawfdpcAMKE9D1hByDVcaUqdQ0PEN5MbIeVv7l-BSsV2rRXSkA6_-YMi1_-5JI_wuwJZo8wf4L5I1w8wcUFJuJ0X5IkyxfWv_8QfoSzRx2A8NMa_hJd-YekH5VYUvq_ZP4ZcvEZsvgH8lLirfaXFbuu8uvqWnkmzMI-D2ZtFHGEpbuursvtpI04wi18cW--afF7802Y3Ztvp8hvNw_gMV5a1WzJVg9t8fdjEfv4H8fiTij5PUldxvFpRtP0lRRaOYFCiF5OoXN-RA1mig5kijr7CUKUEUecIihs5RwQSEmVStw4eDf3w2oQyWLCWmszoQaFg3w1zu9WzV_QD_Ic4A3hzVibVJV17e_J8x0I49VeVHswXfLozB8QBxPAhDDj7v7s0ppXXLp8iPEcUh1YQ1iz2nfp1dm5VK6mRcKaD8Kabx-lf8GV3jutnI1_5S_EDd0CJG747n-rfg4lZrrm-sAPMsM6r3Iq9vmeldlQV51ie6ZFp7Q-CCxEnreyojTnVVVQITJTM8oKyvOSHnhFy91B6I4fupaVLa3o_kAKiqM09nr4bEm73guR02wZmrA8zYwtjyr_4s7RjOZDRuOmQFhqTMLYaEJA_XIPJkycMl8n4oua-0AKak2I4SYWTbTL0__NjGdruvevzQ9EnG5NkW54naF0627depTtIJVFUtJs9rZ-LGdv4jCrXevGrbbb38vZu-_YRsKaJclAWLPk-WcAAAD__0F3zBo">