You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On both non-Windows x86-64 (which uses x86_fp80 as long double) and PowerPC (which uses ppc_fp80 as long double), Clang emits long double and __float128 with exactly the same debuginfo: a DW_AT_encoding of DW_ATE_float and a DW_AT_byte_size of 0x10. This means debuggers like LLDB can't tell the difference: currently LLDB will presume the float type that is the same size as long double is long double, meaning __float128 values get displayed as nonsense.
This can be seen by debugging this C program on an affected platform:
The long double will be displayed correctly in LLDB, whereas the __float128 will not. This problem also affects debuginfo emitted by GCC and rustc (while rustc doesn't support long double, its f128 type will still get misinterpreted as long double by the debugger).
While searching for previous discussion, I found this thread from January 2022 on the dwarf-discuss mailing list that appeared to be leaning towards adding new DW_ATE codes, but I haven't been able to find any further discussion since.