<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/136044>136044</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang 16/17/18 fail to compiler ppc64le with -mfloat128
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
munroesj52
</td>
</tr>
</table>
<pre>
Clang fails the pveclib configure test for PVECLIB_FLOAT128_CFLAGS with -mfloat128. and no -mcpu. This should default to power8 and the libgcc runtime.
Clang uses /usr/include/powerpc64le-linux-gnu/bits/floatn.h from the GCC installation which defines:
/* The following builtins (suffixed with 'q') are available in GCC >= 6.2,
which is the minimum version required for float128 support on powerpc64le.
Since GCC 7.0 the builtins suffixed with f128 are also available, then
there is no need to redefined them. */
# if !__GNUC_PREREQ (7, 0)
# define __builtin_copysignf128 __builtin_copysignq
# define __builtin_fabsf128 __builtin_fabsq
# define __builtin_inff128 __builtin_infq
# define __builtin_nanf128 __builtin_nanq
# define __builtin_nansf128 __builtin_nansq
# endif
But the configure test fails with:
conftest.c:78:13: error: use of unknown builtin '__builtin_copysignq' [-Wimplicit-function-declaration]
78 | return (__builtin_copysignf128(valx, valy));
| ^
/usr/include/powerpc64le-linux-gnu/bits/floatn.h:101:35: note: expanded from macro '__builtin_copysignf128'
101 | # define __builtin_copysignf128 __builtin_copysignq
| ^
1 error generated.
GCC still defines both __builtin_copysignf128 and __builtin_copysignq
But is appears that clang only defines __builtin_copysignf128 which leaves GCCs floatn.h in a confused state.
PVECLIB is @ https://github.com/open-power-sdk/pveclib
The pveclib configue test source is ./testprograms/test_ppc_F128.c
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVU1z2zYQ_TXQZUccEqRE6sADrZiZznjaNHHbowYElyISEKDxIdv_vgNQclr54xAfbAsCdt--3feWWSuOCrEmmxuy-bRi3o3a1JNXRqP9vqGrTvfP9V4ydYSBCWnBjQjzCbkUHXCtBnH0BsGhdTBoA1_-vt3f_XZzaO_-aO4zWh327V3z-Rs8CjfCehqkZi6jVQJM9aA0rCc--wTuR2HBjtrLHnocmJcOnIZZP6Kp4t2QV4ruyDkYr5yYMCFpQ9JmAectWiC09dYQ2grFpe-R0DZGmPm2kLiWQvmn9VF5QttOOEtoG_GoZITB6Cnm-Lzfg1DWMSmZE1rB4yj4GEAJhZbkzZKV0JbQBu5HhEFLqR-FOkLnhXRCBSCV9cMgnrBfKie0fCC0JHQHzCCwExOSdRJBqJiR5Lck_wTbhBK6J2kDcM4rFsYnocTkJzihsQGUwQcvDPaR8wupYP08a-NAK_hP3ckS75tQfCmvTNIY9AXu_7EOIVREKa3-CZXQfXillmhuRIMBndKgEPvQLYMLS7FZUwJAaOQpsJWDGIDQ7HD4_Ptf-8OXr7dfb_8MPJUhbkro7nwNzlTD4XDGd-B6fg5zGoG9Pn54_-XAOnv1KhxdXry6L9RwdV2o4YP4il2DUuwjPIqpazzh6PICVS-GZb5uvIs9upZY1GBo08skhhvhu4STvCkrkjdZTvIG0Bhtwj_eIugBvPqh9KO6dD2M5Ftc0hLI5mb9j5hmKbhw68ErHoSw7pFLZqIoyOZTGIOyAlLuIfwYdN6EoNXbfSO0OjH5FJp9YvI59JvuSH6zTBNADEQ2t4u0flHFofY0I3mTb0LhSjuMTDzNTPVBLEHkE-NGv139ArSMmLI0WzD98kxe15UtLYEjKjTMYX82sCBJ64SUF5OBTrvxvVzBC9_RwDI1wgKbZ2QmOAdzwKM_aiWfX-K_E3pxHInshDYYhYUXexQKWJxFb7EH65i72O_Z8ENaUqQwOjdHlwz-2B6FG32XcD0R2uoZ1Tp2cm37H6GryxohaXP_eqmcB95qb3g0moTQNhzNRh8Nm-z542Ge-aENK4WTtFn1dd7v8h1bYZ2VRVEVNNvR1VizNK2GKu2Kaqi2vKB5vtkW2S7vWdHTPs9WoqYp3aRFtqWU5hlNNuUuH3ieliV2aYYbUqQ4MSETKU9Tos1xJaz1WGf5Ni2KlWQdShsXKaWRc0Jp2KmmDg_WnT9aUqRSWGd_hnDCSayXFmVbQtusDL-qKPTgqVxPs5BoYF7G_3qRrryR9Qekh0znP-vZ6O_IXVBWQB4YPIM_1fTfAAAA__-6lKRw">