On Sat, 19 Aug 2023, 11:45 FX Coudert, <fxcoud...@gmail.com> wrote: > 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?
Yes, this is a new C++23 feature first supported in gcc 13. 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