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

    <tr>
        <th>Summary</th>
        <td>
            Missed Optimization: simplifying byte extraction after a load to a direct load of the byte
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          Cancelll
      </td>
    </tr>
</table>

<pre>
    Example: https://godbolt.org/z/4eMndv4bj
Alive2: https://alive2.llvm.org/ce/z/Q_ucUS
```llvm
define i8 @src(ptr %0)  {
  %2 = getelementptr inbounds nuw i8, ptr %0, i64 12
  %3 = load i32, ptr %2, align 1
  %4 = lshr i32 %3, 16
  %5 = trunc i32 %4 to i8
  ret i8 %5
}

define i8 @tgt(ptr %0) {
  %2 = getelementptr inbounds nuw i8, ptr %0, i64 14
  %3 = load i8, ptr %2, align 1
  ret i8 %3
}
```
I found this pattern in rmd_dgst.c, sha1dgst.c, sha256.c, ssl3_cbc.c, and statem_dtls.c in openssl
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysk0GPozgQhX-NuZQ6MrYhyYED3b2R9tBarVZ7jgyugFvGRnaR6e5fPzJJJjM9ozmNhMAuvlfUk3k6JTt4xIZVj6x6LvRCY4jNk_Y9OueKLpj35q83Pc0OmWxhJJoTky0TByYOQzBdcLQJcWDi8MHEQeGLN2fVvTLets6eUfys0mt949x5uip7vMr_PS79__8x3rKaX65MMd4aPFmPYHfAFE-xZ2I3UwQmKs7EHoBtHxlvIRcEMPkMAxI6nNBT5qzvwuJNAr98Abtj4gnu8iewtYJS3BrItYEL2oCV4jt2XWtnBw_lDVYXOI0xw6s8U2V9A6oVoLj4_kYooJCnyEREWl2Jqsq2t8_5_skvDfTJ7x-wq35ld_c7t_dR5X3U2zkx3v4Np_xVoNEmmDURRg_WQ5zM0QyJNn3umEZd_rATVX1dJyePfddfdtobSKQJp6MhlzZ9bhVm9Cm5wjTS7OVeF9iUW1Vud1JJVYxNty07o2uJpqt3WnTyVGstxf4kKsFVvStsI7iouCxFKZSs1Ga7FbxXBvei6kpdlkxxnLR1337Pwqa0YFNKvq9U4XSHLt3SEptMPXTLkJjiziZKdx1Zcti82JTQwD8z2cl-aLLB50QkO83Ont6tH6B7JwR8o6j7_Br0iTCCvhwJBdBgbMSeLoVwAhpxFRVLdM2nRFoal27Th4mJw5qdy-NhjuEVe2LisPpJTByuls6N-BoAAP__CJIyZw">