<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/137557>137557</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Missed optimization: Switch on truncated select result not folded for certain constants
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          aris-bb
      </td>
    </tr>
</table>

<pre>
    ```llvm
----------------------------------------
define i16 @src(i1 %cnd) {
entry:
  %sel = select i1 %cnd, i16 0, i16 3
  %trunc = trunc i16 %sel to i8
  switch i8 %trunc, label %bb_unreachable [
    i8 0, label %bb_true_path
    i8 3, label %bb_false_path
 ]

bb_false_path:
  br label %bb_merge

bb_true_path:
  br label %bb_merge

bb_unreachable:
  br label %bb_merge

bb_merge:
 %final_result = phi i16 [ %sel, %bb_unreachable ], [ 99, %bb_true_path ], [ 100, %bb_false_path ]
  ret i16 %final_result
}
=>
define i16 @tgt(i1 %cnd) {
#0:
  %switch.select = select i1 %cnd, i16 99, i16 100
  ret i16 %switch.select
}
Transformation seems to be correct!
```

It's worth noting that replacing the constant(s) `3` with `4` in the example enables the expected simplification.

https://godbolt.org/z/eMqa6Gs3Y
https://alive2.llvm.org/ce/z/H34-Co

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMVMGS4yYQ_Rp0oexCjZDsgw6edZzksKfkktMUQi2LFAIF0Ex2vz4F0tie2a3UuFxlYd5rXj-eWoagrxaxJeKJiHMhlzg630qvw67ris7131pSs_VrzMtE2Gn3yQ9hpx4HbZHqsqakYsErAgddUgJC2Z7AkZLmibAT2ui_EX4i7ETTZkBDCT_TgAZVpA-ML7kWe3vgb4zoF6syZ33KJ66FoqP6kHHhVUc1Un24MVIdI7t0HIiue16sR6lG2RmkyZHEoonAPiKjX_B5lnG8Y_hHzCBNuIOIOBOWWny_s3Xd-XfUCf0Vb_D7YZ9BPzTxKfy6WpEExKCtNM8ew2JidnQe9eqneNo8TY3-zLBz3hBP9Hi8Q27iHwElY3fE3Y3NJEo9xrc7fNSTNDfZRn4m_JcfEhav8ecJI8DZY8ByEvZbvv4vamsn6SlJ_iDtXZmbtj-9tGFwfpJRO0sD4hRSCjukynmfoFAm9Nt7td7E75FAE-ir83Gk1kVtrzSOMlKPs5FqXaYSNkRpU58h91czTmpGX3Wyr2ZVWmibsfivnGaDFG26oLD9N6OK2NOgp9noQassc7-KGGOcQzIKLgQuV9d3zsS981cCl-8ELvj1H1n_GvhfP2Cl0S8I-zQjNrzCjfQbr3ZfHGGnom95f-RHWWBbNpVojlyUTTG2cFCNgH4AceB9PdQITcUOAwglJCrsCt0CA8EqaAD4gTd7aBBlXzZQVseqrCWpGE5Sm5uAQoewYFvyRoimyOkPecoBWHyleZcApKHn20Tadcs1kIoZHWK4l4k6Gmy_6hCwp26OetLfs2OEn-gf60Rxdh07Mvu6Jml7gayLdHCmx54OzlOFPkptb7cYisWb9oPrOo5Lt1duInDJM3f92c3e_Z3Tc8nqA4HL1t5LC_8FAAD__ycNvNo">