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

    <tr>
        <th>Summary</th>
        <td>
            compiler-rt 
        </td>
    </tr>

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

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

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

<pre>
    As of 05a4212cc76d170445f5a118ec6d1a2a76f61fc8 various functions in builtins use the type xf_float in place of long double. These don't compile on non-x86 targets.

The type is only defined by

```
#if HAS_80_BIT_LONG_DOUBLE
typedef long double xf_float;
...
#endif
```

so if HAS_80_BIT_LONG_DOUBLE is not 1, that type isn't defined, and all the source files that refer to it fail to compile. Some tests are guarded on this but the source code is not. For example, try to build for aarch64, and the HAS_80_BIT_LONG_DOUBLE will be false (rightly so) and then you get errors of the genre

```
~/llvm-project/compiler-rt/lib/builtins/mulxc3.c:25:3: error: unknown type 
 name 'xf_float'; did you mean 'tf_float'?
   25 |   xf_float __bc = __b * __c;
      |   ^~~~~~~~ 
      | tf_float   
```

The gcc docs on these functions don't say anything about 80 bits being magic as far as I can tell:
`complex long double __mulxc3 (long double a, long double b, long double c, long double d)`

Deleting the functions on non-x64 seems a bit strong, but putting xf_float as a typedef for long double on other architectures seems at odds with the intent of the patch.

@arichardson what did you intend to happen on other architectures?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8VU9zo7gT_TTypSsUCDDmwMFJxr_fbE3tHCZ7poTUgHaF5JKaSXyZz74lMImT3SzlwvrX3a-73xMiBD1YxIaV94xz4bUchVfBWcY5Kx93YqbR-eY3Zx9GDIS-12jUrnPq0hwDuB7SUhQ841JWe5VVaVGUfSmy7IByrzLBRbXv91kvD_BTeO3mAP1sJWlnA2gL3awNaRtgDgg0ItDljPDSt71xguKJsxESYyDj7ADKzZ3BBJ5GDAgq4qwIpJvO2iA4C9bZu5fDHkj4ASkkLH1k6XF9P23-dQBnzQUU9tqigu5ye4zt0-tvnfJc9_D_44_2kLb3X5_ab99__1_7-P2P-29f1hPRp8J3CF9TYPn9eihJkld_aJXu_z3Y8g4OPg0ZwVtHkDH-ADQK2lJaS3FNKW4Kq0AYs5Q1uNlLhF4bDKuVxx49kANN0Att4vBaxwR-uAmBMFAA4RGGWXiFKtaXRh2gm-nWq3QKr7ASODkP-CKms8EFob9Ez7HPCnrnQQgvx32xAYxuPkn0WRsDHUIvTEBg_OD1MJK5QHCM15u1hYubYUAC9N75hZPR6YDW43-09RfjJ2N-Tndn7_5ESYyfrun7Ox9nRneMnzaCMn6aZvMi80Sy_MhLlh9zlh_XoHEw27-se7ZrN9YQYMUUgVevZOAVy-9BabWAnlDYuE2326erLQAvgVUPAG9yaNtOAssf4wAYP0LbyleCwfKsFqz88mt94OPmFixOP2dglMogJSgnw9r2qLc36W7KC-ICwl5o1HYA0bmZ4JBCpylAh3FtEoOWIAL0wse_ryCFBUJjWP7WmFh5gy_vFNS2a8Fj52_XRaTO7UL3cUF-XFCM1x8SfESDFAFGrrzltd0g-wIC4hRAxGQgkHd2iG4j9c8zLaavfRHx3HYLRJLfBncWHI3oIRJfE0qaPYbNPYFTKsCzpnGBoi2hpY3EZ0FyfHeHsSK9uaXhOUp549Niq6LcRnE-o_0kNMtPO9Xkqs5rscMmq7KiSMsyLXdjsy_SoszqWiqZq_pQiFT0nZIZdhXmxaHa6YanvEgLXmdlUaZFUvUcRdeVqqzEoahrVqQ4CW2SKK7E-WGnQ5ixqdPicNgZ0aEJ18-NxWdYNq8fG98sguzmIbAiNTpQePNCmgw2NxKF3exNMxKdQ6QSPzF-GjSNc5dIN13V_U-RLwGjnBdAfwcAAP__mFI9_Q">