<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/111950>111950</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
`-ffast-math` emits redundant `push/pox rax` since Clang 17
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
namniav
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/Ea5ccfebr
```c
#include <math.h>
float foo(float x) {
return expf(x);
}
```
Clang 17.0.1 `-O3 -ffast-math`:
```asm
foo:
push rax
call expf@PLT
pop rax
ret
```
Clang 17.0.1 `-O3`:
```asm
foo:
jmp expf@PLT
```
Clang 16.0.0 `-O3 -ffast-math`:
```asm
foo:
jmp expf@PLT
```
GCC 14.2 `-O3 -ffast-math`:
```
foo:
jmp expf
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysk89unDAQxp9muFiL7DGwcPAh2YReKrWHvoBtzOLIYITNatunr7xL2uwqqhKpCPFH34y_34xmZAj2OBkjoHyE8imTaxz8IiY5TlaeMuW7n2KIcQ7AHwBbwPboO-VdzP1yBGx_AbbPstS6N2oB-gT0YXtW9Hrr7R-5nbRbO0OAH0YZh3wA_vw2pXdeRtJ7D1hfv8-ADYH941UnhJDFxHWZiDnPPWCddOCbDPunO-u3hx-cnI6E7XOaMwIV3X3jZNf3MsRdgknR_B5dhnEj8_6PSrZrXsNwIZLnW0FL566ABf3-9cddlp_Ju1mLiZ-j_zzxy3j1vmf7l2OV05z-l34l9w85fzkcCCty_KjrO5Y3ld5GZ53gXcMbmRnB9lhXyAteZ4NQqikaWpemR4UaS110RVX0VaUY8sr0mRVIsWCUMVoyyuucUSmxl3LflZSpUkNBzSity507jWk_MhvCagRjrClp5qQyLrwu2iJS1E6txwAFdTbE8Dcv2uiMSPXf1E7MaGMgi-nWqZNTTB1KYwjYzv58mamKkmAnbcjrxGTr4u432MZhVbn2I2CbPLfXbl78i9ERsL2AB8B2Yz8J_B0AAP__4s0cfA">