<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">