<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/84342>84342</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[InstCombine] Missed optimization: fold `min` in `phi`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
XChy
</td>
</tr>
</table>
<pre>
Alive2 proof: https://alive2.llvm.org/ce/z/IAXE_-
### Motivating example
```llvm
define i1 @src(i32 %a, i32 %b, i1 %c) #0 {
entry:
br i1 %c, label %then, label %loop
then:
call void @dummy()
%min = call i32 @llvm.umin.i32(i32 %a, i32 6)
br label %loop
loop:
%ind = phi i32 [ %min, %then ], [ %b, %entry ]
%cmp = icmp ult i32 %ind, 6
ret i1 %cmp
}
```
can be folded to:
```llvm
define i1 @tgt(i32 %a, i32 %b, i1 %c) #0 {
entry:
br i1 %c, label %then, label %loop
then:
call void @dummy()
br label %loop
loop:
%ind = phi i32 [ %a, %then ], [ %b, %entry ]
%cmp = icmp ult i32 %ind, 6
ret i1 %cmp
}
```
### Real-world motivation
This snippet of IR is derived from [linux/kernel/power/snapshot@snapshot_read_next](https://github.com/torvalds/linux/blob/67be068d31d423b857ffd8c34dbcc093f8dfff76/kernel/power/snapshot.c#L2244)(IR from llvm-opt-benchmark).
The example above is a reduced version. If you're interested in the original suboptimal IR and optimal IR, see also:https://godbolt.org/z/135zx6s3K
**Let me know if you can confirm that it's an optimization opportunity, thanks.**
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8VcFu4zgPfhrlQjRwKNuxDzlkmt9A8c9cij3MrZAtOtZWlgxJTps-_UJy0k6L3dkpsLuBkJAmQ38kP5HCe3U0RDtWfGHFYSXmMFi3-347nFetlefdXqsTIUzO2p7xPQwhTJ7xPcOGYSOSda31aVxbd2TYdMSweWHY3O2__-_hhmUHlu0v38iXA99sUCcRlDkCPYtx0gTvHMtsOTHu8khSrwyB2gDLM-86hpXiCAwLwfAWLnKb5E0UO4Y1MOQZsO2XJQaZ4M4RetKgdW-ut6BFSzpqYSDz7oG2dvoRXXJ4jQKd0BpOVsmITM7jeGZYMawvdobFqAwwflg8E9I8ZbaeR2XWiuOfJFO-RYhA_xJM0vkePvm5hmZYKCMTumlQC7jiywV0xHIpCLDikNTF2F5MqaLJ9havG6cUT0Vh1uHaG2Vk_Ff5-m5H4dqA8ZrT9vCBAYvaCQMtQW-1JAnBvpb_1_gSjuEf4Mt_RJhfavff90_8S937BLk-0eCPA-KehL55sk5LGC-zwpofXX8blAdv1DRRANvD3T0oD5KcOpGE3tkxZquVmZ8ZNo_kDGmGzWSfyDFsvBGTH2yIw-QiPjgS8sHQc0jVqt4PuqMKw9yuOzsybIJ1J6GlZ9hc39Bq2zJsym1LWVlJvpE58rYqtn0vq47nsu26rOZ9Jfu-35Y_w7TuGPKviHkeSYHV3f2STyT3jZ3CTUumG0bhHhnW62s56HWSitaeKFZDgCM5dyThRM4ra9Zw18PZzgy3jkCZQI58IAnKQBgIrFNHZYQGP7d2CmoUOhZWGAlvaqSBJwKhfbyHH8pkZWt1uOyCuAY2vHh5Lj3___tGx_OVAowEj8Y-gUrAIF70zppeuRHCIAKowHDrQZgFgXpJTAA7TdaF2ahwjnjCIMyjXy9hV3LHZc1rsaLdZpvVFc_Kiq-GHXVYZ7wlqmUvZEebPM-o7vK-79say26ldphhnvFsuymLKuPrbc6xlUVX9gVhXRHLMxqF0q8Lb6W8n2lX5TzHVbq1Pm1SRENPkIwMMS5Wt0v9a-ejj-Nf-eDfogQVdFrBd8aHWzu2yhArDvBNeU_yXerx9sc5CKzM4owus9g9VmbToFiZrWandz-hbpqQy8_N5Ozv1AWGTQIa6ZwS-SMAAP__V3xMug">