diff mbox

, PR 77924, Fix PowerPC breakage on AIX

Message ID 20161010204653.GA30861@ibm-tiger.the-meissners.org
State New
Headers show

Commit Message

Michael Meissner Oct. 10, 2016, 8:46 p.m. UTC
I accidently broke AIX with my patch on October 6th.  That patch split
-mfloat128 into -mfloat128-type and -mfloat128 under PowerPC Linux.  This patch
fixes that issue.  I bootstrapped it on PowerPC Linux with no regressions, and
David Edelsohn reports that it fixes the problem on AIX.  Is it ok to apply the
patch?

2016-10-10  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/77924
	* config/rs6000/rs6000.c (rs6000_init_builtins): Only create the
	distinct __ibm128 IBM extended double type if long doubles are
	128-bits and the default format for long double is IEEE 128-bit.

Comments

Segher Boessenkool Oct. 11, 2016, 5:14 p.m. UTC | #1
On Mon, Oct 10, 2016 at 04:46:53PM -0400, Michael Meissner wrote:
> I accidently broke AIX with my patch on October 6th.  That patch split
> -mfloat128 into -mfloat128-type and -mfloat128 under PowerPC Linux.  This patch
> fixes that issue.  I bootstrapped it on PowerPC Linux with no regressions, and
> David Edelsohn reports that it fixes the problem on AIX.  Is it ok to apply the
> patch?
> 
> 2016-10-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
> 
> 	PR target/77924
> 	* config/rs6000/rs6000.c (rs6000_init_builtins): Only create the
> 	distinct __ibm128 IBM extended double type if long doubles are
> 	128-bits and the default format for long double is IEEE 128-bit.

Okay, thanks!


Segher
diff mbox

Patch

Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c	(revision 240941)
+++ gcc/config/rs6000/rs6000.c	(working copy)
@@ -16572,10 +16572,10 @@  rs6000_init_builtins (void)
      floating point, we need make sure the type is non-zero or else self-test
      fails during bootstrap.
 
-     We don't register a built-in type for __ibm128 or __float128 if the type
-     is the same as long double.  Instead we add a #define for __ibm128 or
-     __float128 in rs6000_cpu_cpp_builtins to long double.  */
-  if (TARGET_IEEEQUAD || !TARGET_LONG_DOUBLE_128)
+     We don't register a built-in type for __ibm128 if the type is the same as
+     long double.  Instead we add a #define for __ibm128 in
+     rs6000_cpu_cpp_builtins to long double.  */
+  if (TARGET_LONG_DOUBLE_128 && FLOAT128_IEEE_P (TFmode))
     {
       ibm128_float_type_node = make_node (REAL_TYPE);
       TYPE_PRECISION (ibm128_float_type_node) = 128;