<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63476>63476</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            CodeGen doesn't produce muladd despite -ffp-contract=fast
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          c0d1f1ed
      </td>
    </tr>
</table>

<pre>
    The culprit is in `clang/include/clang/Basic/LangOptions.h`:
```C++
  bool allowFPContractWithinStatement() const {
    return getFPContractMode() == LangOptions::FPM_On;
  }
```
This should instead be:
```C++
 bool allowFPContractWithinStatement() const {
    return getFPContractMode() != LangOptions::FPM_Off;
  }
```
Since we also have `FPM_Fast` and `FPM_FastHonorPragmas`.

This might also be the root cause of #61024.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0U8Fq3DAQ_ZrxZVgjS147e_AhyeL20JBAAj0WWRrbKrJkrHFC_77YSbOhUNpLYcDWiPf0nt5Ip-SGQNTA8QaO50yvPMalMcIWfUE266L90TyNhGb18-IYXUIXECphvA4DyNYF41dLINtfnRudnAHZftFhuJ_ZxZDyESoB6hrEGcT19r_XLcibrfYuYhejR-19fGkfbmPgRRv-6nh04ZE100SBQV6BPKGJITFC_Q5FXIjXJeBAfAHfxU3YjgB1BnXGD5o2Oeq6fbj7dh9AvTNBff5N5evyaXQJ0xhXb9GFxKQtdvQ3T__Vkiz-bKnv_8HTowuG8IVQ-xRx1M-0JbvhW50YKoE62I-tzzHE5WHRw6QTVCJ_Y71c0OSGkV_pOkIeCZcYGY1eE2HsEaSqCiHLPLONsid10hk1RXVVH0tRFzIbG1GLwhyN7OypK_uylrqsyk6LTknStTSZa6SQSlRSFXVxpWROuiR71EVXCSpPpYVS0KSdz71_nvK4DJlLaaWmUmVdZV535NM-71IGesF9E6Tcxn9pNsyhW4cEpfAucbqwsGNPzW209IkC2kgpgKwZ5yXa1RBOq9fWoqU0OyY89P18MG-xgTr3OnG2Lr4Zmec9KtmCbAfH49rlJk4g2-2st89hXuJ3Mrw9sU1hAtnuDn4GAAD__7dkICw">