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

    <tr>
        <th>Summary</th>
        <td>
            [Indvars] Miscompile: SSA value incorrectly simplified
        </td>
    </tr>

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

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

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

<pre>
    One can find the incorrect transformation here: https://godbolt.org/z/T9qMhT7rb
And the proof of incorrect transformation here: https://alive2.llvm.org/ce/z/PXjb5J

For the record, I describe the problem here. Given the IR:
```
define i32 @widget() {
bb:
  br label %bb1

bb1:                                              ; preds = %bb4, %bb
  %phi = phi i32 [ -173, %bb ], [ %sub, %bb4 ]
  %phi2 = phi i32 [ 1, %bb ], [ %add, %bb4 ]
  %srem = srem i32 729259140, %phi
  %trunc = trunc i32 %phi2 to i8
  %urem = urem i8 -83, %trunc
  %zext = zext i8 %urem to i32
  %sub = sub nsw i32 0, %zext
  br label %bb4

bb4: ; preds = %bb1
  %add = add nuw nsw i32 %phi2, 1
  %icmp = icmp eq i32 %sub, 0
  br i1 %icmp, label %bb5, label %bb1

bb5:                                              ; preds = %bb4
 %phi6 = phi i32 [ %srem, %bb4 ]
  ret i32 %phi6
}
```
which returns `srem i32 729259140, -173` which is `130`. The above IR under the `indvars` pass transforms to:
```
define i32 @widget() {
  br label %bb1

bb1: ; preds = %bb4, %bb
  br label %bb4

bb4:                                              ; preds = %bb1
 br i1 true, label %bb5, label %bb1

bb5: ; preds = %bb4
  ret i32 729259140
}
```
which returns `729259140` which is the wrong answer. 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVd2O2zYTfRr6ZrAGRerHvtCF_Bn-sAXSFs1e9JZ_shhIpEJSdpOnL0hL8mLjpN22hgGNyDPnDH2GHua9PhulalQcUHHcsCl01tU_a9cxt-FWfql_MQoEM9BqIyF0CrQR1jklAgTHjG-tG1jQ1kCnnEK0gS6E0SPaIHJC5HS2kts-bK07I3L6isjpZf_5Q_dSOY5w08yko7O2Bdu-l531-qLItu8vw6wg1Czz6--fePETwg3Czcm6JOOUsE4i8j94Bqm8cJqrRZ_3akgqW_i_viiT1p9_i1K4QSWev7iRqtVGgaYEUI6vWp5VQGSHyB5QdUC44fyWBMAd9IyrHhApOM9uxcSANvCuD6IHGJ2SHhA93tjyeIwUJSlEirHTaTs-U3XFAZ6yiq5AQMUxvRSHuOAnvm7lae9ORL5hyr5Hw6R8TOOdGhJNCiJPRfak2Gc5nhPGTi_g4CYjEvoWJdm5lGBB7xbgtLCmQO_gabecMGUuuK_qj5BwKdC7NTeyUbIWOfFbjRMH469JdykvZj7wMV98zKOPD6zJFnImZVqNTzNdV4H5YFFmxWoxjAmcAvV5Ac4u4aUQnS3ouPyqrOLN-9puxX_TbriZ6y6_6Y3Z7Adt4FR4deIyllQd31yoa6dFF5GTMx5QiR_3S2rlEsMNrhMyo5FjCy-dAsbtJd5YmIxUt_uOSqyNvDDnY-LIvL__rXgI9h9c7h9f6r--pz9qpX_rUeqlW4sEN6l39cf3LF8dvHvxtzy8w19bFk25OmvOwIy_KreFjayp3NM926g6q2hFiwLv6aarBc9kIXaCZW2ZsVy0Ja-EYq0kO9ruKd3ommBS4IxgXNJdRrf7TJUiq_IdwS2vMoZyrAam-3U8bLT3k6ozEkU26afwafQRYtQV0i4iJE5CV8ekJz6dPcpxr33wd5qgQ59m5vPcXMURPmgv7DDqPk2pjx8buLB-ejUu-y_g9TD2utVKbibX128GpQ7dxLfCDoicotT8eBqd_aREQOSUCvSInOYTXGryZwAAAP__QzAmDg">