https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85657
--- Comment #7 from Michael Meissner <meissner at gcc dot gnu.org> --- Author: meissner Date: Fri Jun 22 14:11:56 2018 New Revision: 261891 URL: https://gcc.gnu.org/viewcvs?rev=261891&root=gcc&view=rev Log: [gcc] 2018-06-22 Michael Meissner <meiss...@linux.ibm.com> Back port from trunk 2018-06-08 David Edelsohn <dje....@gmail.com> * config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if TARGET_ELF. Back port from trunk 2018-06-04 Michael Meissner <meiss...@linux.ibm.com> * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to track if we pass or return IEEE 128-bit floating point. (ieee128_mangling_gcc_8_1): New boolean to say whether to generate C++ mangling that is compatible with GCC 8.1. (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook. (init_cumulative_args): Note if we pass or return IEEE 128-bit floating point types. (rs6000_function_arg_advance_1): Likewise. (rs6000_mangle_type): Optionally generate mangled names that match what GCC 8.1 generated for IEEE 128-bit floating point types. (rs6000_globalize_decl_name): If we have an external function that passes or returns IEEE 128-bit types, generate a weak reference from the mangled name used in GCC 8.1 to the current mangled name. (rs6000_init_builtins): Make __ibm128 use the long double type if long double is IBM extended double. Make __float128 use the long double type if long double is IEEE 128-bit. PR target/85657 * config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper macro for __ibm128 built-in functions. (PACK_IF): Add __ibm128 pack/unpack functions. (UNPACK_IF): Likewise. * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not enable long double built-in functions if long double is IEEE 128-bit floating point. (rs6000_invalid_builtin): Update long double built-in function error message. (rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in functions, adjust the built-in function to use the long double built-in function if __ibm128 and long double are the same type. * doc/extend.texi (PowerPC builtins): Update documention for __builtin_{,un}pack_longdouble. Add documentation for __builtin_{,un}pack_ibm128. Back port from trunk 2018-06-01 Segher Boessenkool <seg...@kernel.crashing.org> * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of the 128-bit floating point types. Fix function comment. [gcc/testsuite] 2018-06-18 Michael Meissner <meiss...@linux.ibm.com> Back port from trunk 2018-06-06 Michael Meissner <meiss...@linux.ibm.com> PR target/85657 * g++.dg/pr85657.C: Only test whether __ibm128 and long double can be used in templates. Don't check for them in overloaded functions. Added: branches/gcc-8-branch/gcc/testsuite/gcc.target/powerpc/pr85657-4.c branches/gcc-8-branch/gcc/testsuite/gcc.target/powerpc/pr85657-5.c branches/gcc-8-branch/gcc/testsuite/gcc.target/powerpc/pr85657-6.c Modified: branches/gcc-8-branch/gcc/ChangeLog branches/gcc-8-branch/gcc/config/rs6000/rs6000-builtin.def branches/gcc-8-branch/gcc/config/rs6000/rs6000.c branches/gcc-8-branch/gcc/doc/extend.texi branches/gcc-8-branch/gcc/testsuite/ChangeLog branches/gcc-8-branch/gcc/testsuite/g++.dg/pr85657.C