https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103623
Kewen Lin <linkw at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |linkw at gcc dot gnu.org
--- Comment #1 from Kewen Lin <linkw at gcc dot gnu.org> ---
Thanks for reporting this as well as PR103622.
Confirmed. It's starting to fail from r12-5752, but isn't a dup of PR103622.
With r12-5751, we will get the error messages like:
test.c: In function ‘main’:
test.c:2:16: error: ‘__builtin_unpack_longdouble’ requires the
‘-mlong-double-128’ option
2 | #define UNPACK __builtin_unpack_longdouble
| ^
test.c:11:15: note: in expansion of macro ‘UNPACK’
11 | double x0 = UNPACK (a, 0);
| ^~~~~~
In the previous bif support, __builtin_{pack,unpack}_longdouble are guarded
with bif mask (RS6000_BTM_HARD_FLOAT | RS6000_BTM_LDBL128), but new bif support
puts them under "always" stanza.
One fix seems to introduce one stanza for 128bit long double like previous
RS6000_BTM_LDBL128 which is enabled only if (TARGET_LONG_DOUBLE_128 &&
TARGET_HARD_FLOAT && !TARGET_IEEEQUAD), and guard
__builtin_{pack,unpack}_longdouble under this new stanza.
I also noticed that there also is a TODO for long double vs. ibm128.