aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorMichael Meissner <meissner@linux.ibm.com>2018-06-18 19:10:08 +0000
committerMichael Meissner <meissner@gcc.gnu.org>2018-06-18 19:10:08 +0000
commit6a8886e45f7eb6684f4e27b9d823ea3d02df787c (patch)
tree8005da91b739ec8d9e6b89e3b0a29707aff9b968 /libgcc
parentb0874c667d1bcc7e414f130dd4ec3973d388dbfb (diff)
downloadgcc-6a8886e45f7eb6684f4e27b9d823ea3d02df787c.zip
gcc-6a8886e45f7eb6684f4e27b9d823ea3d02df787c.tar.gz
gcc-6a8886e45f7eb6684f4e27b9d823ea3d02df787c.tar.bz2
re PR target/85358 (PowerPC: Using -mabi=ieeelongdouble -mcpu=power9 breaks __ibm128)
[gcc] 2018-06-18 Michael Meissner <meissner@linux.ibm.com> PR target/85358 * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit floating point modes, so that IFmode is numerically greater than TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE to declare the ordering. This prevents IFmode from being converted to TFmode when long double is IEEE 128-bit on an ISA 3.0 machine. Include rs6000-modes.h to share the fractional values between genmodes* and the rest of the compiler. (IFmode): Likewise. (KFmode): Likewise. (TFmode): Likewise. * config/rs6000/rs6000-modes.h: New file. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the meaning of rs6000_long_double_size so that 126..128 selects an appropriate 128-bit floating point type. (rs6000_option_override_internal): Likewise. * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h. (TARGET_LONG_DOUBLE_128): Change the meaning of rs6000_long_double_size so that 126..128 selects an appropriate 128-bit floating point type. (LONG_DOUBLE_TYPE_SIZE): Update comment. * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the source and destination to match the standard usage. (truncifkf2): Likewise. (copysign<mode>3, IEEE iterator): Rework copysign of float128 on ISA 2.07 to use an explicit clobber, instead of passing in a temporary. (copysign<mode>3_soft): Likewise. [libgcc] 2018-06-18 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/t-float128 (FP128_CFLAGS_SW): Compile float128 support modules with -mno-gnu-attribute. * config/rs6000/t-float128-hw (FP128_CFLAGS_HW): Likewise. From-SVN: r261712
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog6
-rw-r--r--libgcc/config/rs6000/t-float1282
-rw-r--r--libgcc/config/rs6000/t-float128-hw2
3 files changed, 8 insertions, 2 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index fc24d8e..65efe17 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,9 @@
+2018-06-18 Michael Meissner <meissner@linux.ibm.com>
+
+ * config/rs6000/t-float128 (FP128_CFLAGS_SW): Compile float128
+ support modules with -mno-gnu-attribute.
+ * config/rs6000/t-float128-hw (FP128_CFLAGS_HW): Likewise.
+
2018-06-07 Olivier Hainque <hainque@adacore.com>
* config/t-vxworks (LIBGCC_INCLUDES): Add
diff --git a/libgcc/config/rs6000/t-float128 b/libgcc/config/rs6000/t-float128
index 8d52521..d541344 100644
--- a/libgcc/config/rs6000/t-float128
+++ b/libgcc/config/rs6000/t-float128
@@ -59,7 +59,7 @@ fp128_includes = $(srcdir)/soft-fp/double.h \
# Build the emulator without ISA 3.0 hardware support.
FP128_CFLAGS_SW = -Wno-type-limits -mvsx -mfloat128 \
- -mno-float128-hardware \
+ -mno-float128-hardware -mno-gnu-attribute \
-I$(srcdir)/soft-fp \
-I$(srcdir)/config/rs6000 \
$(FLOAT128_HW_INSNS)
diff --git a/libgcc/config/rs6000/t-float128-hw b/libgcc/config/rs6000/t-float128-hw
index acdddb0..d64ca4d 100644
--- a/libgcc/config/rs6000/t-float128-hw
+++ b/libgcc/config/rs6000/t-float128-hw
@@ -25,7 +25,7 @@ fp128_sed_hw = -hw
# Build the hardware support functions with appropriate hardware support
FP128_CFLAGS_HW = -Wno-type-limits -mvsx -mfloat128 \
-mpower8-vector -mpower9-vector \
- -mfloat128-hardware \
+ -mfloat128-hardware -mno-gnu-attribute \
-I$(srcdir)/soft-fp \
-I$(srcdir)/config/rs6000 \
$(FLOAT128_HW_INSNS)