<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">