re PR target/85657 (Make __ibm128 a separate type, even if long double uses the IBM...
authorMichael Meissner <meissner@linux.ibm.com>
Wed, 6 Jun 2018 21:11:15 +0000 (21:11 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Wed, 6 Jun 2018 21:11:15 +0000 (21:11 +0000)
commitc765c8cb73b0bb91e9f0401ab6567b6218b910e5
tree275dcfb6667d7feb398c5115a168ec6bb4c1016b
parent9d67f13e6afe013a65c1e910bf8fdda976dcd1ad
re PR target/85657 (Make __ibm128 a separate type, even if long double uses the IBM double-double format)

[gcc]
2018-06-06  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.

[gcc]
2018-06-05  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/rs6000.c (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.

[gcc/testsuite]
2018-06-05  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.

From-SVN: r261246
gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/pr85657.C