[PATCH], PowerPC long double transition patches, v2, Patch #1 (disable long double multilib)

Michael Meissner meissner@linux.ibm.com
Fri Jun 22 21:04:00 GMT 2018


On Thu, Jun 21, 2018 at 02:22:50PM -0500, Segher Boessenkool wrote:
> On Thu, Jun 21, 2018 at 01:26:19PM -0400, Michael Meissner wrote:
> > On Thu, Jun 21, 2018 at 12:09:12PM -0500, Segher Boessenkool wrote:
> > > > 	* config.gcc (powerpc64le*): Remove multilib support for IEEE and
> > > > 	IBM long double.
> > > > 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
> > > > 	Likewise.
> > > > 	* config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise.
> > > > 	* config/rs6000/t-ldouble-linux64le-ibm: Delete, IEEE/IBM long
> > > > 	double multilib no longer supported.
> > > > 	* config/rs6000/t-ldouble-linux64le-ieee: Likewise.
> > > > 	* doc/install.texi (PowerPC options): Delete information about
> > > > 	IEEE/IBM long double multilibs.
> > > 
> > > This reverts r256775 (the commit message should say), except the linux64.h
> > > parts, and it seems you just missed those?
> > 
> > No it only reverts part of r256775.  The main part of the r256775 change is to
> > add support for --with-long-double-format={ieee,ibm} which we need to keep.
> 
> That is r256558 as far as I see?

Yes you were right, r256775 was the patch that enabled multilibs by default,
and 256558 was the patch that added --with-long-double-format=<xxx>.  I thought
I had submitted them as part of one patch.

Here is the patch redone to disable multilib support altogether.  I verified
that without --{enable,disable}-multilib that it no longer builds a multilib
compiler.  Can I install this into the trunk and to the GCC 8.x branch?

2018-06-22  Michael Meissner  <meissner@linux.ibm.com>

	* config.gcc (powerpc64le*): Revert January 16th, 2018 patch that
	added IEEE/IBM long double multilib support on PowerPC little
	endian Linux systems.
	* config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Likewise.
	(MULTILIB_DEFAULTS): Likewise.
	* config/rs6000/rs6000.c (rs6000_option_override_internal):
	Likewise.
	* config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise.
	* config/rs6000/t-ldouble-linux64le-ibm: Delete, no longer used.
	* config/rs6000/t-ldouble-linux64le-ieee: Delete, no longer used.

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meissner@linux.ibm.com, phone: +1 (978) 899-4797
-------------- next part --------------
Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc	(revision 261910)
+++ gcc/config.gcc	(working copy)
@@ -4566,16 +4566,6 @@ case "${target}" in
 		elif test x$with_long_double_format = xibm; then
 		    tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
 		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*-*-*)
Index: gcc/config/rs6000/linux64.h
===================================================================
--- gcc/config/rs6000/linux64.h	(revision 261910)
+++ gcc/config/rs6000/linux64.h	(working copy)
@@ -245,18 +245,11 @@ extern int dot_symbols;
 #define DYNAMIC_LINKER_PREFIX	""
 #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
-#define MULTILIB_DEFAULTS { "m64", MULTILIB_DEFAULTS_IEEE }
+#define MULTILIB_DEFAULTS { "m64" }
 #else
-#define MULTILIB_DEFAULTS { "m32", MULTILIB_DEFAULTS_IEEE }
+#define MULTILIB_DEFAULTS { "m32" }
 #endif
 
 /* Split stack is only supported for 64 bit, and requires glibc >= 2.18.  */
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c	(revision 261910)
+++ gcc/config/rs6000/rs6000.c	(working copy)
@@ -4582,15 +4582,11 @@ rs6000_option_override_internal (bool gl
      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
      those systems will not pick up this default.  Warn if the user changes the
-     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.  */
+     default unless -Wno-psabi.  */
   if (!global_options_set.x_rs6000_ieeequad)
     rs6000_ieeequad = TARGET_IEEEQUAD_DEFAULT;
 
-  else if (!TARGET_IEEEQUAD_MULTILIB
-	   && rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT
-	   && TARGET_LONG_DOUBLE_128)
+  else if (rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT && TARGET_LONG_DOUBLE_128)
     {
       static bool warned_change_long_double;
       if (!warned_change_long_double)
Index: gcc/config/rs6000/rs6000.h
===================================================================
--- gcc/config/rs6000/rs6000.h	(revision 261910)
+++ gcc/config/rs6000/rs6000.h	(working copy)
@@ -551,12 +551,6 @@ extern int rs6000_vector_align[];
 #define TARGET_ALTIVEC_ABI rs6000_altivec_abi
 #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.
    Enable 32-bit fcfid's on any of the switches for newer ISA machines.  */
 #define TARGET_FCFID	(TARGET_POWERPC64				\
Index: gcc/config/rs6000/t-ldouble-linux64le-ibm
===================================================================
--- gcc/config/rs6000/t-ldouble-linux64le-ibm	(revision 261910)
+++ gcc/config/rs6000/t-ldouble-linux64le-ibm	(working copy)
@@ -1,26 +0,0 @@
-# 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)
Index: gcc/config/rs6000/t-ldouble-linux64le-ieee
===================================================================
--- gcc/config/rs6000/t-ldouble-linux64le-ieee	(revision 261910)
+++ gcc/config/rs6000/t-ldouble-linux64le-ieee	(working copy)
@@ -1,26 +0,0 @@
-# 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)


More information about the Gcc-patches mailing list