<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/64686>64686</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[InstCombine] CPU2006/454.calculix 38% slow-down after `Set dead phi inputs to poison in more cases`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
nikic
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vzakhari
</td>
</tr>
</table>
<pre>
The regression happened after https://reviews.llvm.org/rGd01aec4c769d50fb92e86decd41d077c94105841 with `Flang` and `-Ofast -march=native` on Icelake server.
Reverting the patch brings performance back.
The whole slow-down is in the loopnest at `e_c3d.f:675`. There is many reported 4k aliasing events, which I think are caused by extra register spills inside the loop. `llvm-mca` also suggests that the code generated for the loopnest after the patch is much slower, than before the patch.
Files with more information and a reproducer:
[mca_36.gz](https://github.com/llvm/llvm-project/files/12337651/mca_36.gz) - the loopnest assembly and `llvm-mca` report before the patch (rev: c0a36a1)
[mca_37.gz](https://github.com/llvm/llvm-project/files/12337650/mca_37.gz) - the loopnest assembly and `llvm-mca` report before the patch (rev: d01aec4)
[before_icp.llvm.gz](https://github.com/llvm/llvm-project/files/12337649/before_icp.llvm.gz) - LLVM IR for `e_c3d` routine containing the loopnest
[after_icp.llvm.gz](https://github.com/llvm/llvm-project/files/12337648/after_icp.llvm.gz) - LLVM IR arter `opt before_icp.llvm -S -o - --passes=instcombine`
InstCombine reorders instructions in the loop body quite a bit, and it looks like this ends up increasing the register pressure somehow.
It does not look like the reordering is the intended behavior of the patch, so can we avoid it?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0VU1v4zYQ_TX0ZWCDoj4sH3zIxlARYIsWu9teA4ocS1NTpEpS9mZ_fUEpzudeCmQvCiKR4_fevHkjQ6DOIu5Z-YkJYelEignBysNKTrF3fn_-IU-99LRqnX7Yf-sRPHYeQyBnoZfjiBY1yGNED32MY2D5DRMNE43HM-ElbIw5Dxvnu_TqN80ziapQ22qnS35sdwLrSqPSRab5dqt2RcbLusjgQrEHVvHGSNuxioO0Ov2__uMoQ4T1IL3qWX6wMtIZ0wFn4U6hkSeEgP6MfsP4gfGbL3hGH8l2EHuEUUbVQ-vJdgFG9EfnB2kVQivV6fHG8kxcL70zCMG4y1q7iwUKQHauY5wbLYYIMiZYeK9yvTmy_KbalqziG4BvPXpMNwZpH8Dj6HxEDcUJpCEZEiA8o42BiVu49KR6uIPYkz2B9AhKTgE1tA-A36OXSXYKSeUwkjEJRyCNT1g2CUWSej0oOetlgoMwdR2GGCD2Ms5nldMIHVr0MqE5Ov-GztzJZ6US_kn1swboE9TYSwstHp3H53OvlGvIYFg6OKRTZGeVY7JMamMiM3qnJ4U-2eXFVVZ-GpS8z6tN94OVBybq16bqKPZTu1FuYKJJdB__rEfv_kEVmWiO6deZaDKR59uqzJhonkuKHazfEA4Bh9Y8XA32UsOlae_IAhO1xzPLb0BxmVcyY2L3MxbbD2PBryy2v4LF41S-Z7HcuSc1LmP8QXSKHRPNT2rPvD5__vt3uPsyW_M6WTMNN0WyycE2SrLXgb5K8Ab57OOPB14z0bwv_Qq39GmCWMXdeBX96TCsv8LawRrW6zG1LLD8QDZE5YaWbIqxVzTm550N8Xb5Dh6d1-jn6Y9-UmmkXkUSpJiGfyeKCBJaimlikycopu-nAIZOyQQUAK0OMI1AVnlcAiku-b4EzZhifvIIwQ3Yu8sGFkBwF0E7DGDdUvRa8wlfKkVhfkM2otUpyLCXZ3Ie3PHZgwldcKCkhQuCPDtKSFnerPQ-17t8J1e4z6qd4HnOeb3q921WiWOpdxq52OWVzhSvtli0heZlibpe0V5wkfM6K7Jtxnm9yYXCWotCbzGr22POCo6DJPO0mFYUwoT7qqjqamVkiyZc9yFeYP74uBP9fnZHO3WBFdxQiM_rbRUpmnmRvmgYKw9w--dfgvOKiaYoi42SRk2GvkNeM1G-WC1L8LKKf8UIGqWGsScgO04pvh2MjoKzqddzpiqZ3FPx1eTN_n-7eiaVbD2T_i8AAP__dZ6exA">