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