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

    <tr>
        <th>Summary</th>
        <td>
            IV not simplified
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:instcombine,
            missed-optimization
      </td>
    </tr>

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

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

<pre>
    https://alive2.llvm.org/ce/z/hfmwgf

The following fold is not performed. Same can be done with GEPs.

```llvm
define void @src2(i64 %base, i64 %end) {
entry:
  br label %loop

loop:
  %iv2 = phi i64 [ %iv2.next, %loop ], [ %base, %entry ]
  %iv = phi i64 [ %iv.next, %loop ], [ 0, %entry ]
  call void @use.i64(i64 %iv2)
  %iv.next = add nuw nsw i64 %iv, 4
  %iv2.next = add i64 %base, %iv.next
  %cmp = icmp eq i64 %iv.next, %end
  br i1 %cmp, label %exit, label %loop

exit:
 ret void
}

define void @tgt2(i64 %base, i64 %end) {
entry:
 br label %loop

loop:
  %iv = phi i64 [ %iv.next, %loop ], [ 0, %entry ]
  %iv2 = add i64 %base, %iv
  call void @use.i64(i64 %iv2)
 %iv.next = add nuw nsw i64 %iv, 4
  %cmp = icmp eq i64 %iv.next, %end
 br i1 %cmp, label %exit, label %loop

exit:
  ret void
}
```

iv2 here is basically just iv+base but written as phi(base, iv.next+base)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU2PgzYQ_TXmYi2CAUI4cNhsStVbpVa9GzyE2YJNsUk2--srm2xCom6lXa0UJf54M2_83mgijKGDQixZtmPZPhCz7fRUKvqbmqDW8lx21o6GJc8MKgaV6OmIEPb9cQj1dGBQNcigemdQde1wOrQs2rPoefn-s0Pe6r7XJ1IHt5KcDFfa8hGnVk8DypD_IQbkjVC8Ri61Qn4i2_Fff_ndhOtcbBMtH0e9HElsSSE_apKcpZGZGmCwpU3KGWS1MMjghV-2qCSDgrN8t8SistPZvcrvOK8n3osae4fttR7X1H5_gzLI6AicJXs-drQQZLvLcajwzTreSx7Osr3fLoiPqnxFdjr763Xe_077f1mjz_I1ou-v4swGQ9qkN33oCAyKO27P4gsQUnI1n7gyJ37FO570XoT7iAflV5Xfgpph9HhyC_znln39RGfWzReKL4Hu9moSvpG9O3h0zQOurk1ovRYXRL5fQx8ayR7stxvpq330g36v-vIzN77RGt_pjC-a_FMef2ryx-hYhzqpOpzQTaRaGHKSnPnrbCx3D9o53Xg9W36ayFpUXBjnE4PttSE-nrNbTopAlokskkIEWMZ5lKabbZLkQVfGQhR1XNRx29QJiki27UYiJGncbLcRyoBKiCCN4iiLM8iSPKxlHefbPIE2LoooTVga4SCovw7egIyZsczzONoGXh_jRziAn4_JMyljGz3UpJABMHhhAAMZg_JJj5YGeheWtHJ32T6YShf2VM8Hw9KoJ2PNjcqS7bH87S8_uQ0NY08toQzmqX_4dziQ7eY6bPTAoPKFLD9P46RfsbEMKl-3YVD50v8NAAD__1-j2NQ">