<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/154238>154238</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Missed optimization: fold away neutral fadd 0.0 before fabs
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zxt5
</td>
</tr>
</table>
<pre>
```
define double @src(double %arg0, float %arg1) {
%v2 = fadd float %arg1, 0.000000e+00
%v3 = call noundef float @llvm.fabs.f32(float %v2)
%v4 = fpext float %v3 to double
%v5 = fcmp olt double %arg0, %v4
%v6 = select i1 %v5, double %v4, double %arg0
ret double %v6
}
define double @tgt(double %arg0, float %arg1) {
%v2 = call noundef float @llvm.fabs.f32(float %arg1)
%v3 = fpext float %v2 to double
%v4 = fcmp olt double %arg0, %v3
%v5 = select i1 %v4, double %v3, double %arg0
ret double %v5
}
```
Alive2: https://alive2.llvm.org/ce/z/WyK7Q9
Godbolt: https://godbolt.org/z/n36zdahPM
Pattern found in https://github.com/dtcxzyw/llvm-opt-benchmark/blob/main/bench/opencv/optimized/ts_func.ll
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyclEFv6ygUhX_N9QbVwhfjJAsv0laexahSZzXLETbXCfMIRAa7TX79E06atGn11PcsyzJwz7mcTwgVgtk4ohrkPcjHTI1x64f6-Bpl1np9qKHi55evNfXGEdN-bC0xKHkYOsDl2xilGjYc8IH11qt4nigAVwwW98DXLE1NyEA8sl5pfVv3wHjO54cA7zm_SMQs6ZS1zPnRaerfpCW3dtrlvWpD3gsEXF48JwRcXSzKU9c9vcZr20mw6M95LpXyVNnt9szbyD6nm-0u5dVcHshSF5kpThap7Cqcyo_j2SjpB3rvP1XA17B4TN8vYMdN_FPYv0nubHSD_5YdfsGu_A47cYP6I7sbVpP4Hjt5ZffuxAJfr62ZCEGs2TbGfQCxBmwAGzXP5zMEP2wAm44AmyNg8-_h78U_Kf5fXrfexs_izWnhLEwaJ6qjVtvnp1PXZxUjDY71CToz7lZv4nZs887vABsdu9fj4QWwSZu58_t415Lrtjs1_ABsWutbwGanjEujtALY-D25bpp_otmZI2nAJob_-tF1ubWZroVeiZXKqC4WUsqqLFBm27rSqiK1kMVSCqkWi0rpYtkKvhJl3xYlZqZGjpIvixXnJXKZq74lXMqqoFL3pVpByWmnjL2gy0wII9WFLFEsM6tasmG-TxAdvbB5FRDT9TLUc8R23IR0AE2I4WoTTbRUP5kQSLNzLBWNd4l_761m6kUdmKMxDsqebhCec9ZS7wdi6SRn42DrX6BOvd447wf_P3URsJl3GACbc4Spxp8BAAD___aMhtQ">