mirror of git://gcc.gnu.org/git/gcc.git
config.gcc (powerpc*-linux*-*): Add support for 64-bit little endian Linux systems to optionally enable...
2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com>
* config.gcc (powerpc*-linux*-*): Add support for 64-bit little
endian Linux systems to optionally enable multilibs for selecting
the long double type if the user configured an explicit type.
* config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
have no long double multilibs if not defined.
* config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
warn if the user used -mabi={ieee,ibm}longdouble and we built
multilibs for long double.
* config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
appropriate multilib option.
(MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
multilib options.
* config/rs6000/t-ldouble-linux64le-ibm: New configuration files
for building long double multilibs.
* config/rs6000/t-ldouble-linux64le-ieee: Likewise.
From-SVN: r256775
This commit is contained in:
parent
dbc4d77ca4
commit
060619250d
|
|
@ -1,3 +1,21 @@
|
||||||
|
2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com>
|
||||||
|
|
||||||
|
* config.gcc (powerpc*-linux*-*): Add support for 64-bit little
|
||||||
|
endian Linux systems to optionally enable multilibs for selecting
|
||||||
|
the long double type if the user configured an explicit type.
|
||||||
|
* config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
|
||||||
|
have no long double multilibs if not defined.
|
||||||
|
* config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
|
||||||
|
warn if the user used -mabi={ieee,ibm}longdouble and we built
|
||||||
|
multilibs for long double.
|
||||||
|
* config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
|
||||||
|
appropriate multilib option.
|
||||||
|
(MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
|
||||||
|
multilib options.
|
||||||
|
* config/rs6000/t-ldouble-linux64le-ibm: New configuration files
|
||||||
|
for building long double multilibs.
|
||||||
|
* config/rs6000/t-ldouble-linux64le-ieee: Likewise.
|
||||||
|
|
||||||
2018-01-16 John David Anglin <danglin@gcc.gnu.org>
|
2018-01-16 John David Anglin <danglin@gcc.gnu.org>
|
||||||
|
|
||||||
* config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
|
* config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
|
||||||
|
|
|
||||||
|
|
@ -4407,6 +4407,16 @@ case "${target}" in
|
||||||
elif test x$with_long_double_format = xibm; then
|
elif test x$with_long_double_format = xibm; then
|
||||||
tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
|
tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case "${target}:${enable_multilib}:${with_long_double_format}" in
|
||||||
|
powerpc64le*:yes:ieee | powerpc64le*:yes:ibm)
|
||||||
|
tm_defines="${tm_defines} TARGET_IEEEQUAD_MULTILIB=1"
|
||||||
|
tmake_file="${tmake_file} rs6000/t-ldouble-linux64le-${with_long_double_format}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
:
|
||||||
|
;;
|
||||||
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
s390*-*-*)
|
s390*-*-*)
|
||||||
|
|
|
||||||
|
|
@ -245,11 +245,18 @@ extern int dot_symbols;
|
||||||
#define DYNAMIC_LINKER_PREFIX ""
|
#define DYNAMIC_LINKER_PREFIX ""
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if TARGET_IEEEQUAD_DEFAULT
|
||||||
|
#define MULTILIB_DEFAULTS_IEEE "mabi=ieeelongdouble"
|
||||||
|
|
||||||
|
#else /* TARGET_IEEEQUAD_DEFAULT. */
|
||||||
|
#define MULTILIB_DEFAULTS_IEEE "mabi=ibmlongdouble"
|
||||||
|
#endif /* TARGET_IEEEQUAD_DEFAULT. */
|
||||||
|
|
||||||
#undef MULTILIB_DEFAULTS
|
#undef MULTILIB_DEFAULTS
|
||||||
#if DEFAULT_ARCH64_P
|
#if DEFAULT_ARCH64_P
|
||||||
#define MULTILIB_DEFAULTS { "m64" }
|
#define MULTILIB_DEFAULTS { "m64", MULTILIB_DEFAULTS_IEEE }
|
||||||
#else
|
#else
|
||||||
#define MULTILIB_DEFAULTS { "m32" }
|
#define MULTILIB_DEFAULTS { "m32", MULTILIB_DEFAULTS_IEEE }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Split stack is only supported for 64 bit, and requires glibc >= 2.18. */
|
/* Split stack is only supported for 64 bit, and requires glibc >= 2.18. */
|
||||||
|
|
|
||||||
|
|
@ -4587,11 +4587,15 @@ rs6000_option_override_internal (bool global_init_p)
|
||||||
systems will also set long double to be IEEE 128-bit. AIX and Darwin
|
systems will also set long double to be IEEE 128-bit. AIX and Darwin
|
||||||
explicitly redefine TARGET_IEEEQUAD and TARGET_IEEEQUAD_DEFAULT to 0, so
|
explicitly redefine TARGET_IEEEQUAD and TARGET_IEEEQUAD_DEFAULT to 0, so
|
||||||
those systems will not pick up this default. Warn if the user changes the
|
those systems will not pick up this default. Warn if the user changes the
|
||||||
default unless -Wno-psabi. */
|
default unless either the user used the -Wno-psabi option, or the compiler
|
||||||
|
was built to enable multilibs to switch between the two long double
|
||||||
|
types. */
|
||||||
if (!global_options_set.x_rs6000_ieeequad)
|
if (!global_options_set.x_rs6000_ieeequad)
|
||||||
rs6000_ieeequad = TARGET_IEEEQUAD_DEFAULT;
|
rs6000_ieeequad = TARGET_IEEEQUAD_DEFAULT;
|
||||||
|
|
||||||
else if (rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT && TARGET_LONG_DOUBLE_128)
|
else if (!TARGET_IEEEQUAD_MULTILIB
|
||||||
|
&& rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT
|
||||||
|
&& TARGET_LONG_DOUBLE_128)
|
||||||
{
|
{
|
||||||
static bool warned_change_long_double;
|
static bool warned_change_long_double;
|
||||||
if (!warned_change_long_double)
|
if (!warned_change_long_double)
|
||||||
|
|
|
||||||
|
|
@ -564,6 +564,12 @@ extern int rs6000_vector_align[];
|
||||||
#define TARGET_ALTIVEC_ABI rs6000_altivec_abi
|
#define TARGET_ALTIVEC_ABI rs6000_altivec_abi
|
||||||
#define TARGET_LDBRX (TARGET_POPCNTD || rs6000_cpu == PROCESSOR_CELL)
|
#define TARGET_LDBRX (TARGET_POPCNTD || rs6000_cpu == PROCESSOR_CELL)
|
||||||
|
|
||||||
|
/* Define as 1 if we support multilibs for switching long double between IEEE
|
||||||
|
128-bit floating point and IBM extended double. */
|
||||||
|
#ifndef TARGET_IEEEQUAD_MULTILIB
|
||||||
|
#define TARGET_IEEEQUAD_MULTILIB 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/* ISA 2.01 allowed FCFID to be done in 32-bit, previously it was 64-bit only.
|
/* ISA 2.01 allowed FCFID to be done in 32-bit, previously it was 64-bit only.
|
||||||
Enable 32-bit fcfid's on any of the switches for newer ISA machines or
|
Enable 32-bit fcfid's on any of the switches for newer ISA machines or
|
||||||
XILINX. */
|
XILINX. */
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Long double multilib libraries for PowerPC 64-bit little endian systems using
|
||||||
|
# IBM extended double as the long double type.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This file is part of GCC.
|
||||||
|
#
|
||||||
|
# GCC is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# GCC is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with GCC; see the file COPYING3. If not see
|
||||||
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
MULTILIB_OPTIONS += mabi=ieeelongdouble/mabi=ibmlongdouble
|
||||||
|
MULTILIB_DIRNAMES += ieee128 ibm128
|
||||||
|
MULTILIB_OSDIRNAMES += mabi.ibmlongdouble=../lib64$(call if_multiarch,:powerpc64-linux-gnu) \
|
||||||
|
mabi.ieeelongdouble=../lib64/ieee128$(call if_multiarch,:powerpc64-linux-gnu) \
|
||||||
|
../lib64$(call if_multiarch,:powerpc64-linux-gnu)
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Long double multilib libraries for PowerPC 64-bit little endian systems using
|
||||||
|
# IEEE 128-bit floating point as the long double type.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This file is part of GCC.
|
||||||
|
#
|
||||||
|
# GCC is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# GCC is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with GCC; see the file COPYING3. If not see
|
||||||
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
MULTILIB_OPTIONS += mabi=ieeelongdouble/mabi=ibmlongdouble
|
||||||
|
MULTILIB_DIRNAMES += ieee128 ibm128
|
||||||
|
MULTILIB_OSDIRNAMES += mabi.ibmlongdouble=../lib64/ibm128$(call if_multiarch,:powerpc64-linux-gnu) \
|
||||||
|
mabi.ieeelongdouble=../lib64$(call if_multiarch,:powerpc64-linux-gnu) \
|
||||||
|
../lib64$(call if_multiarch,:powerpc64-linux-gnu)
|
||||||
Loading…
Reference in New Issue