Message ID | 20161010204653.GA30861@ibm-tiger.the-meissners.org |
---|---|
State | New |
Headers | show |
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
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;