[Bug target/85657] Make __ibm128 a separate type, even if long double uses the IBM double-double format
meissner at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 22 14:12:00 GMT 2018
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 <meissner@linux.ibm.com>
Back port from trunk
2018-06-08 David Edelsohn <dje.gcc@gmail.com>
* config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if
TARGET_ELF.
Back port from trunk
2018-06-04 Michael Meissner <meissner@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 <segher@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 <meissner@linux.ibm.com>
Back port from trunk
2018-06-06 Michael Meissner <meissner@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
More information about the Gcc-bugs
mailing list