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

    <tr>
        <th>Summary</th>
        <td>
            Missed Optimizeation: Missed Optimization: Consecutive divisions can be merged into one if intermediate multiplication doesn't overflow.
        </td>
    </tr>

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

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

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

<pre>
    I'm wondering why `computeOverflowForUnsignedMul` can't pass this scenario:

Alive2 proof: https://alive2.llvm.org/ce/z/AYcyYF

```llvm
define noundef i8 @src(i8 noundef %a, i8 noundef %b, i8 noundef %c) {
start:
  ;; assume b < sqrt(max)
  %b_less_than_sqrt_max = icmp ult i8 %b, 15
  tail call void @llvm.assume(i1 %b_less_than_sqrt_max)
  ;; assume c < sqrt(max)
 %c_less_than_sqrt_max = icmp ult i8 %c, 15
  tail call void @llvm.assume(i1 %c_less_than_sqrt_max)

  ;; perform a / b / c
  %div_ab  = udiv i8 %a, %b
  %res = udiv i8 %div_ab, %c
  ret i8 %res
}
```

```llvm
define noundef i8 @tgt(i8 noundef %a, i8 noundef %b, i8 noundef %c) {
start:
  ;; perform a / (b * c)
  %mul_cb = mul nuw i8 %c, %b
  %res = udiv i8 %a, %mul_cb
  ret i8 %res
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0VE2P4zYM_TX0hdjAkeOvgw_JDFz0MNhTD3sKZIlOVMiSK8nOZH99ITuTJu0W3TkUEJCAoh4fH-nHvVcnQ9RAfoD8NeFTOFvXvPH3Xxyna9JZeW1-BVYOeLFGklPmhJfzFaFIhR3GKdDXmVyv7aW17jezoMm3SUORouAGWBlw5N5jOCuPXpDhTlnI9pDGs9dqJoajs7aHbI_nEEYfb1kLrOXL7UbredhYdwLWCgLWfgfW7r-J67d2BYEiXU9MhHQvqVeG0NjJSOpRVQi71DsBrFLVPQws58Be8DnU_TMkgNUI5QHSvQ_chZU8ImQHyA7IvZ8Gwg4he0H_hwvAqoG_A6vXLJZ3R03eH8OZm2NMOA78HSF7RSWGEScdFoq32tt8eRa40ii41jhbJWMDiwprsdjI9t-Q74Wf6Ikf04vt_SQ78Wl2P0Je6z4SHMn11g3IEVgbZWQtig_ppJqPvMOFzyTVfOOyDG5R7JbnyP89Z316S1wBHX0048hHGuXr4_p8YpvCKfw_2_SsBrAqCrJH8bBOw6SPolvaHSaNZro8Tug_VPlQbgX5GVUS2WSyzmqeULMtd6yqy7QuknNTZKKXeVFUvOY7JvpuK4uyLPs87WjHiSeqYSnL04zl2zTd5cWmykRR5sU2I8ryPtvBLqWBK33_whPl_UTNNmN1WiWad6T9Yk2MGbrgcguMRadyTXz0pZtOPq6f8sH_BRNU0NS8Ke9J4tcxqEF9Jx6UNdFknuP38Is1nsQU1Ewo1ay8ssZHE8OOcCB3IonKBIvWEKo-_ic3kFQ8UJxEUKNWYoFDacmv5mdv9rhJJqebZ387qXCeuo2wA7B2Wbf158vo7O8kArB2adkDa2-azA37MwAA__9WY7uF">