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.