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

    <tr>
        <th>Summary</th>
        <td>
            Another miscompilation in LoopStrengthReduce
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            miscompilation,
            loopoptim
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          d-makogon
      </td>
    </tr>
</table>

<pre>
    Repro: https://godbolt.org/z/ddYvP4jv7

After LSR `@foo` is called with incorrect argument value.
In the initial function loop `bb3` takes backedge 37 times.
After the loop the values that are used to compute the `foo` argument are the following:
```
%phi = 10
%phi4 = 0 + 37 * 4 = 148
%add = 10 - 3 = 7
%trunc = %add = 7
%call = umax %trunc, 10 = 10
%add5 = 10 - 4 = 6
%add6 = 148 + 4 = 152
%icmp = 6 u< 7 = true

%add8 = %add6 + %call = 162
```
So the `foo` argument value is 162.
In the code after LSR `foo` is called with argument equal to `159`:
```
%tmp1 = trunc i64 159 to i32
call void @foo(i32 %tmp1)
```
Alive2 was unable to prove incorrectness of transformations.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0VMlu4zgQ_RrqUohBlRZbBx3cHRgYoA-D5DRHiixJ7FCkhoszM18_oLzEaaQBw5JqefWK9YoiBD1Zop4131jzXIgUZ-d79bSINzc5WwxO_du_0Oodq44wx7gGVh0ZnhieJqcGZ-LO-Ynh6T-GJ6X-Ov9Z_zzvGX9m_Hj5P46RPPx4fQHWclbz0TnWctABpDCGFLzrOIO20nlPMoLwU1rIRjgLk2h3AfnDQpwJtNVRCwNjsjJqZ8E4t2bcYagyaBRvFGAQ8o3URFDtIeqFwu6RScbZ0vLLViNAnEUuTJACKYgOpFvWFGmLYe2N851aDs2u0Rnj3rWd8qFcem759Xf5xGadNbDqGcpPpnqzcWD4LdNkeISLqawP9zih1DUVnqDaXvd3Z_TJys32EPnhzoe7mdIi_oFbPMPvGe0XPkKp5qPQhUf76G1v1Da-V6IN3kO0XNZLFiRWfYf99hF9okclXLAOD5zbDe-Rbdnilwf56n43i22EWU5li5_VIp0iEI_y-1p7dyj6OwmTx89aXjZdLv77ucZlLW9tWgm6raFsupytq2sPW1dnpxVcdY8HXSFckxl2X2IfjT4TwrsIkKwYDGXM1bszfWyJpRDAjRC9sGF0fhF5HW5CL1Rfqa7qREF92R4q3B_qti7mvsEO22GU4iDaEXlV1R3vhoG6sSaUHS90jxwr3vCGd1jyeqd4ScMoRkKJnawPrOa0CG12xpyXvPqFDiFR32LTVoURA5mw3SaIiw55jbTZuDFEht8ZYt49t0a9ZEvzXPg-Qz0NaQqs5kaHGD7Ao46G-qN1cSYPnxFBW_jh3PoaPdkpzi-kkqQiedP_clHpOKdhJ93C8JShr4-n1bufJCPD09ZEYHja-vg_AAD__4w4fms">