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.

Reply via email to