Hi,

> That seems like a bug in the aarch64-darwin port.
> 1.0q should definitely be __float128 rather than _Float128.

Is there a simple way to test what type 1.0q is, in C? I tried using _Generic, 
but it says

> a.c:7:52: error: ‘_Generic’ specifies two compatible types
>     7 |   int i = _Generic(0.q, default: 0, __float128: 1, _Float128: 2);
>       |                                                    ^~~~~~~~~
> a.c:7:37: note: compatible type is here
>     7 |   int i = _Generic(0.q, default: 0, __float128: 1, _Float128: 2);
>       |                                     ^~~~~~~~~~


Then:

>  /* For C, let float128t_type_node (__float128 in some backends) be the
>     same type as float128_type_node (_Float128), for C++ let those
>     be distinct types that mangle and behave differently.  */

OK so my mistake is in not defining float128t_type_node in the aarch64-darwin 
port. I will do that. Am I correct in reading that this “new” way of handling 
extended types in C++ was introduced in 2022-09-27? If so, my port to 
aarch64-darwin was done two years ago, and that explains why I missed that 
entirely…

Thanks a lot Jakub for the help!
FX

Reply via email to