https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105359
--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Kewen Lin <li...@gcc.gnu.org>: https://gcc.gnu.org/g:993a3c0894c487dce5efc6cfb5b31a8358905e8f commit r15-2428-g993a3c0894c487dce5efc6cfb5b31a8358905e8f Author: Kewen Lin <li...@linux.ibm.com> Date: Tue Jul 30 21:21:15 2024 -0500 rs6000: Relax some FLOAT128 expander condition for FLOAT128_IEEE_P [PR105359] As PR105359 shows, we disable some FLOAT128 expanders for 64-bit long double, but in fact IEEE float128 types like __ieee128 are only guarded with TARGET_FLOAT128_TYPE and TARGET_LONG_DOUBLE_128 is only checked when determining if we can reuse long_double_type_node. So this patch is to relax all affected FLOAT128 expander conditions for FLOAT128_IEEE_P. By the way, currently IBM double double type __ibm128 is guarded by TARGET_LONG_DOUBLE_128, so we have to use TARGET_LONG_DOUBLE_128 for it. IMHO, it's not necessary and can be enhanced later. Btw, for all test cases mentioned in PR105359, I removed the xfails and tested them with explicit -mlong-double-64, both pr79004.c and float128-hw.c are tested well and float128-hw4.c isn't tested (unsupported due to 64 bit long double conflicts with -mabi=ieeelongdouble). PR target/105359 gcc/ChangeLog: * config/rs6000/rs6000.md (@extenddf<FLOAT128:mode>2): Don't check TARGET_LONG_DOUBLE_128 for FLOAT128_IEEE_P modes. (extendsf<FLOAT128:mode>2): Likewise. (trunc<FLOAT128:mode>df2): Likewise. (trunc<FLOAT128:mode>sf2): Likewise. (floatsi<FLOAT128:mode>2): Likewise. (fix_trunc<FLOAT128:mode>si2): Likewise. gcc/testsuite/ChangeLog: * gcc.target/powerpc/pr79004.c: Remove xfails.